17 Oct, 2007

1 commit


18 Jul, 2007

1 commit

  • currently the export_operation structure and helpers related to it are in
    fs.h. fs.h is already far too large and there are very few places needing the
    export bits, so split them off into a separate header.

    [akpm@linux-foundation.org: fix cifs build]
    Signed-off-by: Christoph Hellwig
    Signed-off-by: Neil Brown
    Cc: Steven French
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     

10 May, 2007

1 commit


23 Jan, 2007

1 commit

  • This patch fixes a confusion reiserfs has for a long time.

    On release file operation reiserfs used to try to pack file data stored in
    last incomplete page of some files into metadata blocks. After packing the
    page got cleared with clear_page_dirty. It did not take into account that
    the page may be mmaped into other process's address space. Recent
    replacement for clear_page_dirty cancel_dirty_page found the confusion with
    sanity check that page has to be not mapped.

    The patch fixes the confusion by making reiserfs avoid tail packing if an
    inode was ever mmapped. reiserfs_mmap and reiserfs_file_release are
    serialized with mutex in reiserfs specific inode. reiserfs_mmap locks the
    mutex and sets a bit in reiserfs specific inode flags.
    reiserfs_file_release checks the bit having the mutex locked. If bit is
    set - tail packing is avoided. This eliminates a possibility that mmapped
    page gets cancel_page_dirty-ed.

    Signed-off-by: Vladimir Saveliev
    Cc: Jeff Mahoney
    Cc: Chris Mason
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vladimir Saveliev
     

09 Dec, 2006

1 commit


08 Dec, 2006

2 commits

  • Replace kmalloc+memset with kzalloc

    Signed-off-by: Yan Burman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yan Burman
     
  • One of our test team hit a reiserfs_panic while running fsstress tests on
    2.6.19-rc1. The message looks like :

    REISERFS: panic(device Null superblock):
    reiserfs[5676]: assertion !(p->path_length != 1 ) failed at
    fs/reiserfs/stree.c:397:reiserfs_check_path: path not properly relsed.

    The backtrace looked :

    kernel BUG in reiserfs_panic at fs/reiserfs/prints.c:361!
    .reiserfs_check_path+0x58/0x74
    .reiserfs_get_block+0x1444/0x1508
    .__block_prepare_write+0x1c8/0x558
    .block_prepare_write+0x34/0x64
    .reiserfs_prepare_write+0x118/0x1d0
    .generic_file_buffered_write+0x314/0x82c
    .__generic_file_aio_write_nolock+0x350/0x3e0
    .__generic_file_write_nolock+0x78/0xb0
    .generic_file_write+0x60/0xf0
    .reiserfs_file_write+0x198/0x2038
    .vfs_write+0xd0/0x1b4
    .sys_write+0x4c/0x8c
    syscall_exit+0x0/0x4

    Upon debugging I found that the restart_transaction was not releasing
    the path if the th->refcount was > 1.

    /*static*/
    int restart_transaction(struct reiserfs_transaction_handle *th,
    struct inode *inode, struct path *path)
    {
    [...]

    /* we cannot restart while nested */
    if (th->t_refcount > 1) { <<i_sb)->j_next_async_flush = 1;

    -->> retval = restart_transaction(th, inode, &path); <refcount is > 1, the path is still valid. And,

    if (retval)
    goto failure;
    repeat =
    _allocate_block(th, block, inode,
    &allocated_block_nr, NULL, create);

    If the above allocate_block fails with NO_DISK_SPACE or QUOTA_EXCEEDED,
    we would have path which is not released.

    if (repeat != NO_DISK_SPACE && repeat != QUOTA_EXCEEDED) {
    goto research;
    }
    if (repeat == QUOTA_EXCEEDED)
    retval = -EDQUOT;
    else
    retval = -ENOSPC;
    goto failure;
    [...]

    failure:
    [...]
    reiserfs_check_path(&path); << Panics here !

    Attached here is a patch which could fix the issue.

    fix reiserfs/inode.c : restart_transaction() to release the path in all
    cases.

    The restart_transaction() doesn't release the path when the the journal
    handle has a refcount > 1. This would trigger a reiserfs_panic() if we
    encounter an -ENOSPC / -EDQUOT in reiserfs_get_block().

    Signed-off-by: Suzuki K P
    Cc: "Vladimir V. Saveliev"
    Cc:
    Cc: Jeff Mahoney
    Acked-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Suzuki K P
     

04 Oct, 2006

1 commit


30 Sep, 2006

2 commits


27 Sep, 2006

1 commit

  • This eliminates the i_blksize field from struct inode. Filesystems that want
    to provide a per-inode st_blksize can do so by providing their own getattr
    routine instead of using the generic_fillattr() function.

    Note that some filesystems were providing pretty much random (and incorrect)
    values for i_blksize.

    [bunk@stusta.de: cleanup]
    [akpm@osdl.org: generic_fillattr() fix]
    Signed-off-by: "Theodore Ts'o"
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Theodore Ts'o
     

06 Aug, 2006

2 commits


02 Jul, 2006

1 commit


01 Jul, 2006

1 commit


29 Jun, 2006

1 commit


27 Mar, 2006

2 commits

  • Now that get_block() can handle mapping multiple disk blocks, no need to have
    ->get_blocks(). This patch removes fs specific ->get_blocks() added for DIO
    and makes it users use get_block() instead.

    Signed-off-by: Badari Pulavarty
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Badari Pulavarty
     
  • The return value of this function is never used, so let's be honest and
    declare it as void.

    Some places where invalidatepage returned 0, I have inserted comments
    suggesting a BUG_ON.

    [akpm@osdl.org: JBD BUG fix]
    [akpm@osdl.org: rework for git-nfs]
    [akpm@osdl.org: don't go BUG in block_invalidate_page()]
    Signed-off-by: Neil Brown
    Acked-by: Dave Kleikamp
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     

03 Mar, 2006

1 commit


02 Feb, 2006

2 commits

  • In data=journal mode, reiserfs writepage needs to make sure not to trigger
    transactions while being run under PF_MEMALLOC. This patch makes sure to
    redirty the page instead of forcing a transaction start in this case.

    Also, calling filemap_fdata* in order to trigger io on the block device can
    cause lock inversions on the page lock. Instead, do simple batching from
    flush_commit_list.

    Signed-off-by: Chris Mason
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Mason
     
  • After a transaction has closed but before it has finished commit, there is
    a window where data=ordered mode requires invalidatepage to pin pages
    instead of freeing them. This patch fixes a race between the
    invalidatepage checks and data=ordered writeback, and it also adds a check
    to the reiserfs write_ordered_buffers routines to write any anonymous
    buffers that were dirtied after its first writeback loop.

    That bug works like this:

    proc1: transaction closes and a new one starts
    proc1: write_ordered_buffers starts processing data=ordered list
    proc1: buffer A is cleaned and written
    proc2: buffer A is dirtied by another process
    proc2: File is truncated to zero, page A goes through invalidatepage
    proc2: reiserfs_invalidatepage sees dirty buffer A with reiserfs
    journal head, pins it
    proc1: write_ordered_buffers frees the journal head on buffer A

    At this point, buffer A stays dirty forever

    Signed-off-by: Chris Mason
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Mason
     

10 Jan, 2006

1 commit


15 Dec, 2005

1 commit

  • The following patch fixes a bug where if the journal is aborted, it can
    leave a transaction open. The result will be a BUG when another code
    path attempts to start a transaction and will get a "nesting into
    different fs" error, since current->journal_info will be left non-NULL.

    Original fix against SUSE kernel by Chris Mason

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     

29 Nov, 2005

1 commit


28 Oct, 2005

1 commit

  • - ->releasepage() annotated (s/int/gfp_t), instances updated
    - missing gfp_t in fs/* added
    - fixed misannotation from the original sweep caught by bitwise checks:
    XFS used __nocast both for gfp_t and for flags used by XFS allocator.
    The latter left with unsigned int __nocast; we might want to add a
    different type for those but for now let's leave them alone. That,
    BTW, is a case when __nocast use had been actively confusing - it had
    been used in the same code for two different and similar types, with
    no way to catch misuses. Switch of gfp_t to bitwise had caught that
    immediately...

    One tricky bit is left alone to be dealt with later - mapping->flags is
    a mix of gfp_t and error indications. Left alone for now.

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     

13 Sep, 2005

1 commit

  • reiserfs should use mark_inode_dirty during reiserfs_file_write and
    reiserfs_commit_write. This makes sure the inode is properly flagged as
    dirty, which is used during O_SYNC to decide when to trigger log commits.

    This patch also removes the O_SYNC check from reiserfs_commit_write, since
    that gets dealt with properly at higher layers once we start using
    mark_inode_dirty.

    Thanks to Hifumi Hisashi for catching this.

    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Mason
     

10 Sep, 2005

1 commit

  • Update the file systems in fs/ implementing a delete_inode() callback to
    call truncate_inode_pages(). One implementation note: In developing this
    patch I put the calls to truncate_inode_pages() at the very top of those
    filesystems delete_inode() callbacks in order to retain the previous
    behavior. I'm guessing that some of those could probably be optimized.

    Signed-off-by: Mark Fasheh
    Acked-by: Christoph Hellwig
    Signed-off-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mark Fasheh
     

19 Aug, 2005

1 commit

  • When i_acl_default is set to some error we do not hold the lock (hence we
    are not allowed to drop it and reacquire later).

    Signed-off-by: Jan Kara
    Cc: Jeff Mahoney
    Cc: Chris Mason
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     

28 Jul, 2005

1 commit

  • reiserfs_new_inode() can call iput() with the xattr lock held. This will
    cause a deadlock to occur when reiserfs_delete_xattrs() is called to clean
    up.

    The following patch releases the lock and reacquires it after the iput.
    This is safe because interaction with xattrs is complete, and the relock is
    just to balance out the release in the caller.

    The locking needs some reworking to be more sane, but that's more intrusive
    and I was just looking to fix this bug.

    Signed-off-by: Jeff Mahoney
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     

13 Jul, 2005

1 commit

  • This was a pure indentation change, using:

    scripts/Lindent fs/reiserfs/*.c include/linux/reiserfs_*.h

    to make reiserfs match the regular Linux indentation style. As Jeff
    Mahoney writes:

    The ReiserFS code is a mix of a number of different coding styles, sometimes
    different even from line-to-line. Since the code has been relatively stable
    for quite some time and there are few outstanding patches to be applied, it
    is time to reformat the code to conform to the Linux style standard outlined
    in Documentation/CodingStyle.

    This patch contains the result of running scripts/Lindent against
    fs/reiserfs/*.c and include/linux/reiserfs_*.h. There are places where the
    code can be made to look better, but I'd rather keep those patches separate
    so that there isn't a subtle by-hand hand accident in the middle of a huge
    patch. To be clear: This patch is reformatting *only*.

    A number of patches may follow that continue to make the code more consistent
    with the Linux coding style.

    Hans wasn't particularly enthusiastic about these patches, but said he
    wouldn't really oppose them either.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

26 Jun, 2005

1 commit

  • Reiserfs's readpage does not notice i/o errors. This patch makes
    reiserfs_readpage to return -EIO when i/o error appears.

    This patch makes reiserfs to not ignore I/O error on readpage.

    Signed-off-by: Qu Fuping
    Signed-off-by: Vladimir V. Saveliev
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Qu Fuping
     

24 Jun, 2005

2 commits


01 May, 2005

2 commits

  • comp_short_keys() massaged into sane form, which kills the last place where
    pointer to in_core_key (or any object containing such) would be cast to or
    from something else. At that point we are free to change layout of
    in_core_key - nothing depends on it anymore.

    So we drop the mess with union in there and simply use (unconditional) __u64
    k_offset and __u8 k_type instead; places using in_core_key switched to those.
    That gives _far_ better code than current mess - on all platforms.

    Signed-off-by: Al Viro
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • little-endian objects annotated as such; again, obviously no changes of
    resulting code, we only replace __u16 with __le16, etc. in relevant places.

    Signed-off-by: Al Viro
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Al Viro
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds