08 Mar, 2011

1 commit


02 Feb, 2011

1 commit

  • SELinux would like to implement a new labeling behavior of newly created
    inodes. We currently label new inodes based on the parent and the creating
    process. This new behavior would also take into account the name of the
    new object when deciding the new label. This is not the (supposed) full path,
    just the last component of the path.

    This is very useful because creating /etc/shadow is different than creating
    /etc/passwd but the kernel hooks are unable to differentiate these
    operations. We currently require that userspace realize it is doing some
    difficult operation like that and than userspace jumps through SELinux hoops
    to get things set up correctly. This patch does not implement new
    behavior, that is obviously contained in a seperate SELinux patch, but it
    does pass the needed name down to the correct LSM hook. If no such name
    exists it is fine to pass NULL.

    Signed-off-by: Eric Paris

    Eric Paris
     

17 Jan, 2011

2 commits

  • Currently all filesystems except XFS implement fallocate asynchronously,
    while XFS forced a commit. Both of these are suboptimal - in case of O_SYNC
    I/O we really want our allocation on disk, especially for the !KEEP_SIZE
    case where we actually grow the file with user-visible zeroes. On the
    other hand always commiting the transaction is a bad idea for fast-path
    uses of fallocate like for example in recent Samba versions. Given
    that block allocation is a data plane operation anyway change it from
    an inode operation to a file operation so that we have the file structure
    available that lets us check for O_SYNC.

    This also includes moving the code around for a few of the filesystems,
    and remove the already unnedded S_ISDIR checks given that we only wire
    up fallocate for regular files.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     
  • Instead of various home grown checks that might need updates for new
    flags just check for any bit outside the mask of the features supported
    by the filesystem. This makes the check future proof for any newly
    added flag.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     

13 Jan, 2011

1 commit

  • This patch simply allows XFS to handle the hole punching flag in fallocate
    properly. I've tested this with a little program that does a bunch of random
    hole punching with FL_KEEP_SIZE and without it to make sure it does the right
    thing. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Al Viro

    Josef Bacik
     

11 Nov, 2010

1 commit

  • XFS does not need it's inodes to actuall be hashed in the VFS inode
    cache, but we require the inode to be marked hashed for the
    writeback code to work.

    Insted of using insert_inode_hash, which requires a second
    inode_lock roundtrip after the partial merge of the inode
    scalability patches in 2.6.37-rc simply use the new hlist_add_fake
    helper to mark it hashed without requiring a lock or touching a
    global cache line.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Alex Elder

    Christoph Hellwig
     

26 Oct, 2010

2 commits

  • Clones an existing reference to inode; caller must already hold one.

    Signed-off-by: Al Viro

    Al Viro
     
  • Split up inode_add_to_list/__inode_add_to_list. Locking for the two
    lists will be split soon so these helpers really don't buy us much
    anymore.

    The __ prefixes for the sb list helpers will go away soon, but until
    inode_lock is gone we'll need them to distinguish between the locked
    and unlocked variants.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     

19 Oct, 2010

2 commits

  • We're not actually passing around credentials inside XFS for a while
    now, so remove all xfs_cred.h with it's cred_t typedef and all
    instances of it.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Alex Elder

    Christoph Hellwig
     
  • Under heavy multi-way parallel create workloads, the VFS struggles
    to write back all the inodes that have been changed in age order.
    The bdi flusher thread becomes CPU bound, spending 85% of it's time
    in the VFS code, mostly traversing the superblock dirty inode list
    to separate dirty inodes old enough to flush.

    We already keep an index of all metadata changes in age order - in
    the AIL - and continued log pressure will do age ordered writeback
    without any extra overhead at all. If there is no pressure on the
    log, the xfssyncd will periodically write back metadata in ascending
    disk address offset order so will be very efficient.

    Hence we can stop marking VFS inodes dirty during transaction commit
    or when changing timestamps during transactions. This will keep the
    inodes in the superblock dirty list to those containing data or
    unlogged metadata changes.

    However, the timstamp changes are slightly more complex than this -
    there are a couple of places that do unlogged updates of the
    timestamps, and the VFS need to be informed of these. Hence add a
    new function xfs_trans_ichgtime() for transactional changes,
    and leave xfs_ichgtime() for the non-transactional changes.

    Signed-off-by: Dave Chinner
    Reviewed-by: Alex Elder
    Reviewed-by: Christoph Hellwig

    Dave Chinner
     

03 Sep, 2010

1 commit

  • In xfs_vn_fiemap, we set bvm_count to fi_extent_max + 1 and want
    to return fi_extent_max extents, but actually it won't work for
    a sparse file. The reason is that in xfs_getbmap we will
    calculate holes and set it in 'out', while out is malloced by
    bmv_count(fi_extent_max+1) which didn't consider holes. So in the
    worst case, if 'out' vector looks like
    [hole, extent, hole, extent, hole, ... hole, extent, hole],
    we will only return half of fi_extent_max extents.

    This patch add a new parameter BMV_IF_NO_HOLES for bvm_iflags.
    So with this flags, we don't use our 'out' in xfs_getbmap for
    a hole. The solution is a bit ugly by just don't increasing
    index of 'out' vector. I felt that it is not easy to skip it
    at the very beginning since we have the complicated check and
    some function like xfs_getbmapx_fix_eof_hole to adjust 'out'.

    Cc: Dave Chinner
    Signed-off-by: Tao Ma
    Signed-off-by: Alex Elder

    Tao Ma
     

10 Aug, 2010

2 commits

  • add I_CLEAR instead of replacing I_FREEING with it. I_CLEAR is
    equivalent to I_FREEING for almost all code looking at either;
    it's there to keep track of having called clear_inode() exactly
    once per inode lifetime, at some point after having set I_FREEING.
    I_CLEAR and I_FREEING never get set at the same time with the
    current code, so we can switch to setting i_flags to I_FREEING | I_CLEAR
    instead of I_CLEAR without loss of information. As the result of
    such change, checks become simpler and the amount of code that needs
    to know about I_CLEAR shrinks a lot.

    Signed-off-by: Al Viro

    Al Viro
     
  • Convert XFS to the new truncate sequence. We still can have errors after
    updating the file size in xfs_setattr, but these are real I/O errors and lead
    to a transaction abort and filesystem shutdown, so they are not an issue.

    Errors from ->write_begin and write_end can now be handled correctly because
    we can actually get rid of the delalloc extents while previous the buffer
    state was stipped in block_invalidatepage.

    There is still no error handling for ->direct_IO, because doing so will need
    some major restructuring given that we only have the iolock shared and do not
    hold i_mutex at all. Fortunately leaving the normally allocated blocks behind
    there is not a major issue and this will get cleaned up by xfs_free_eofblock
    later.

    Note: the patch is against Al's vfs.git tree as that contains the nessecary
    preparations. I'd prefer to get it applied there so that we can get some
    testing in linux-next.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     

27 Jul, 2010

3 commits

  • Replace the xfs_itrace_entry catchall with specific trace points. For
    most simple callers we now use the simple inode class, which used to
    be the iget class, but add more details tracing for namespace events,
    which now includes the name of the directory entries manipulated.

    Remove the xfs_inactive trace point, which is a duplicate of the clear_inode
    one, and the xfs_change_file_space trace point, which is immediately
    followed by the more specific alloc/free space trace points.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Dave Chinner

    Christoph Hellwig
     
  • Signed-off-by: Christoph Hellwig
    Reviewed-by: Dave Chinner

    Christoph Hellwig
     
  • Dmapi support was never merged upstream, but we still have a lot of hooks
    bloating XFS for it, all over the fast pathes of the filesystem.

    This patch drops over 700 lines of dmapi overhead. If we'll ever get HSM
    support in mainline at least the namespace events can be done much saner
    in the VFS instead of the individual filesystem, so it's not like this
    is much help for future work.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Dave Chinner

    Christoph Hellwig
     

29 May, 2010

1 commit

  • The new xfsqa test 228 tries to preallocate more space than the
    filesystem contains. it should fail, but instead triggers an assert
    about lock flags. The failure is due to the size extension failing
    in vmtruncate() due to rlimit being set. Check this before we start
    the preallocation to avoid allocating space that will never be used.

    Also the path through xfs_vn_allocate already holds the IO lock, so
    it should not be present in the lock flags when the setattr fails.
    Hence the assert needs to take this into account. This will prevent
    other such callers from hitting this incorrect ASSERT.

    (Fixed a reference to "newsize" to read "new_size". -Alex)

    Signed-off-by: Dave Chinner
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Alex Elder

    Dave Chinner
     

19 May, 2010

1 commit

  • According to Documentation/filesystems/fiemap.txt, If fm_extent_count
    is zero, then the fm_extents[] array is ignored (no extents will be
    returned), and the fm_mapped_extents count will hold the number of
    extents needed.

    But as the commit 97db39a1f6f69e906e98118392400de5217aa33a has changed
    bmv_count to the caller's input buffer, this number query function can't
    work any more. As this commit is written to change bmv_count from
    MAXEXTNUM because of ENOMEM.

    This patch just try to set bm.bmv_count to something sane.
    Thanks to Dave Chinner for the suggestion.

    Cc: Eric Sandeen
    Cc: Alex Elder
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Tao Ma

    Tao Ma
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

02 Mar, 2010

1 commit

  • Allow us to track the difference between timestamp and size updates
    by using mark_inode_dirty from the I/O completion code, and checking
    the VFS inode flags in xfs_file_fsync.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Dave Chinner
    Signed-off-by: Alex Elder

    Christoph Hellwig
     

20 Jan, 2010

1 commit

  • To be consistent with the directory code, the attr code should use
    unsigned names. Convert the names from the vfs at the highest level
    to unsigned, and ænsure they are consistenly used as unsigned down
    to disk.

    Signed-off-by: Dave Chinner
    Reviewed-by: Christoph Hellwig

    Dave Chinner
     

18 Dec, 2009

1 commit

  • After I_SYNC was split from I_LOCK the leftover is always used together with
    I_NEW and thus superflous.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     

15 Dec, 2009

1 commit

  • Convert the old xfs tracing support that could only be used with the
    out of tree kdb and xfsidbg patches to use the generic event tracer.

    To use it make sure CONFIG_EVENT_TRACING is enabled and then enable
    all xfs trace channels by:

    echo 1 > /sys/kernel/debug/tracing/events/xfs/enable

    or alternatively enable single events by just doing the same in one
    event subdirectory, e.g.

    echo 1 > /sys/kernel/debug/tracing/events/xfs/xfs_ihold/enable

    or set more complex filters, etc. In Documentation/trace/events.txt
    all this is desctribed in more detail. To reads the events do a

    cat /sys/kernel/debug/tracing/trace

    Compared to the last posting this patch converts the tracing mostly to
    the one tracepoint per callsite model that other users of the new
    tracing facility also employ. This allows a very fine-grained control
    of the tracing, a cleaner output of the traces and also enables the
    perf tool to use each tracepoint as a virtual performance counter,
    allowing us to e.g. count how often certain workloads git various
    spots in XFS. Take a look at

    http://lwn.net/Articles/346470/

    for some examples.

    Also the btree tracing isn't included at all yet, as it will require
    additional core tracing features not in mainline yet, I plan to
    deliver it later.

    And the really nice thing about this patch is that it actually removes
    many lines of code while adding this nice functionality:

    fs/xfs/Makefile | 8
    fs/xfs/linux-2.6/xfs_acl.c | 1
    fs/xfs/linux-2.6/xfs_aops.c | 52 -
    fs/xfs/linux-2.6/xfs_aops.h | 2
    fs/xfs/linux-2.6/xfs_buf.c | 117 +--
    fs/xfs/linux-2.6/xfs_buf.h | 33
    fs/xfs/linux-2.6/xfs_fs_subr.c | 3
    fs/xfs/linux-2.6/xfs_ioctl.c | 1
    fs/xfs/linux-2.6/xfs_ioctl32.c | 1
    fs/xfs/linux-2.6/xfs_iops.c | 1
    fs/xfs/linux-2.6/xfs_linux.h | 1
    fs/xfs/linux-2.6/xfs_lrw.c | 87 --
    fs/xfs/linux-2.6/xfs_lrw.h | 45 -
    fs/xfs/linux-2.6/xfs_super.c | 104 ---
    fs/xfs/linux-2.6/xfs_super.h | 7
    fs/xfs/linux-2.6/xfs_sync.c | 1
    fs/xfs/linux-2.6/xfs_trace.c | 75 ++
    fs/xfs/linux-2.6/xfs_trace.h | 1369 +++++++++++++++++++++++++++++++++++++++++
    fs/xfs/linux-2.6/xfs_vnode.h | 4
    fs/xfs/quota/xfs_dquot.c | 110 ---
    fs/xfs/quota/xfs_dquot.h | 21
    fs/xfs/quota/xfs_qm.c | 40 -
    fs/xfs/quota/xfs_qm_syscalls.c | 4
    fs/xfs/support/ktrace.c | 323 ---------
    fs/xfs/support/ktrace.h | 85 --
    fs/xfs/xfs.h | 16
    fs/xfs/xfs_ag.h | 14
    fs/xfs/xfs_alloc.c | 230 +-----
    fs/xfs/xfs_alloc.h | 27
    fs/xfs/xfs_alloc_btree.c | 1
    fs/xfs/xfs_attr.c | 107 ---
    fs/xfs/xfs_attr.h | 10
    fs/xfs/xfs_attr_leaf.c | 14
    fs/xfs/xfs_attr_sf.h | 40 -
    fs/xfs/xfs_bmap.c | 507 +++------------
    fs/xfs/xfs_bmap.h | 49 -
    fs/xfs/xfs_bmap_btree.c | 6
    fs/xfs/xfs_btree.c | 5
    fs/xfs/xfs_btree_trace.h | 17
    fs/xfs/xfs_buf_item.c | 87 --
    fs/xfs/xfs_buf_item.h | 20
    fs/xfs/xfs_da_btree.c | 3
    fs/xfs/xfs_da_btree.h | 7
    fs/xfs/xfs_dfrag.c | 2
    fs/xfs/xfs_dir2.c | 8
    fs/xfs/xfs_dir2_block.c | 20
    fs/xfs/xfs_dir2_leaf.c | 21
    fs/xfs/xfs_dir2_node.c | 27
    fs/xfs/xfs_dir2_sf.c | 26
    fs/xfs/xfs_dir2_trace.c | 216 ------
    fs/xfs/xfs_dir2_trace.h | 72 --
    fs/xfs/xfs_filestream.c | 8
    fs/xfs/xfs_fsops.c | 2
    fs/xfs/xfs_iget.c | 111 ---
    fs/xfs/xfs_inode.c | 67 --
    fs/xfs/xfs_inode.h | 76 --
    fs/xfs/xfs_inode_item.c | 5
    fs/xfs/xfs_iomap.c | 85 --
    fs/xfs/xfs_iomap.h | 8
    fs/xfs/xfs_log.c | 181 +----
    fs/xfs/xfs_log_priv.h | 20
    fs/xfs/xfs_log_recover.c | 1
    fs/xfs/xfs_mount.c | 2
    fs/xfs/xfs_quota.h | 8
    fs/xfs/xfs_rename.c | 1
    fs/xfs/xfs_rtalloc.c | 1
    fs/xfs/xfs_rw.c | 3
    fs/xfs/xfs_trans.h | 47 +
    fs/xfs/xfs_trans_buf.c | 62 -
    fs/xfs/xfs_vnodeops.c | 8
    70 files changed, 2151 insertions(+), 2592 deletions(-)

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Alex Elder

    Christoph Hellwig
     

12 Dec, 2009

1 commit

  • Noticed that through glibc fallocate would return 28 rather than -1
    and errno = 28 for ENOSPC. The xfs routines uses XFS_ERROR format
    positive return error codes while the syscalls use negative return
    codes. Fixup the two cases in xfs_vn_fallocate syscall to convert to
    negative.

    Signed-off-by: Jason Gunthorpe
    Reviewed-by: Eric Sandeen
    Signed-off-by: Alex Elder

    Jason Gunthorpe
     

09 Oct, 2009

2 commits

  • Alex Elder
     
  • This is picking up on Felix's repost of Dave's patch to implement a
    .dirty_inode method. We really need this notification because
    the VFS keeps writing directly into the inode structure instead
    of going through methods to update this state. In addition to
    the long-known atime issue we now also have a caller in VM code
    that updates c/mtime that way for shared writeable mmaps. And
    I found another one that no one has noticed in practice in the FIFO
    code.

    So implement ->dirty_inode to set i_update_core whenever the
    inode gets externally dirtied, and switch the c/mtime handling to
    the same scheme we already use for atime (always picking up
    the value from the Linux inode).

    Note that this patch also removes the xfs_synchronize_atime call
    in xfs_reclaim it was superflous as we already synchronize the time
    when writing the inode via the log (xfs_inode_item_format) or the
    normal buffers (xfs_iflush_int).

    In addition also remove the I_CLEAR check before copying the Linux
    timestamps - now that we always have the Linux inode available
    we can always use the timestamps in it.

    Also switch to just using file_update_time for regular reads/writes -
    that will get us all optimization done to it for free and make
    sure we notice early when it breaks.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Felix Blyakher
    Reviewed-by: Alex Elder
    Signed-off-by: Alex Elder

    Christoph Hellwig
     

16 Sep, 2009

2 commits


09 Sep, 2009

1 commit


31 Jul, 2009

1 commit

  • commit 6321e3ed2acf3ee9643cdd403e1c88605d7944ba caused
    the full bmv_count's worth of getbmapx structures to get
    allocated; telling it to do MAXEXTNUM was a bit insane,
    resulting in ENOMEM every time.

    Chop it down to something reasonable, the number of slots
    in the caller's input buffer. If this is too large the
    caller may get ENOMEM but the reason should not be a
    mystery, and they can try again with something smaller.

    We add 1 to the value because in the normal getbmap
    world, bmv_count includes the header and xfs_getbmap does:

    nex = bmv->bmv_count - 1;
    if (nex
    Reviewed-by: Olaf Weber
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Felix Blyakher

    Eric Sandeen
     

13 Jun, 2009

1 commit


12 Jun, 2009

1 commit


10 Jun, 2009

1 commit

  • This patch rips out the XFS ACL handling code and uses the generic
    fs/posix_acl.c code instead. The ondisk format is of course left
    unchanged.

    This also introduces the same ACL caching all other Linux filesystems do
    by adding pointers to the acl and default acl in struct xfs_inode.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Eric Sandeen

    Christoph Hellwig
     

04 Apr, 2009

1 commit

  • * 'for-linus' of git://oss.sgi.com/xfs/xfs: (61 commits)
    Revert "xfs: increase the maximum number of supported ACL entries"
    xfs: cleanup uuid handling
    xfs: remove m_attroffset
    xfs: fix various typos
    xfs: pagecache usage optimization
    xfs: remove m_litino
    xfs: kill ino64 mount option
    xfs: kill mutex_t typedef
    xfs: increase the maximum number of supported ACL entries
    xfs: factor out code to find the longest free extent in the AG
    xfs: kill VN_BAD
    xfs: kill vn_atime_* helpers.
    xfs: cleanup xlog_bread
    xfs: cleanup xlog_recover_do_trans
    xfs: remove another leftover of the old inode log item format
    xfs: cleanup log unmount handling
    Fix xfs debug build breakage by pushing xfs_error.h after
    xfs: include header files for prototypes
    xfs: make symbols static
    xfs: move declaration to header file
    ...

    Linus Torvalds
     

01 Apr, 2009

1 commit


29 Mar, 2009

1 commit

  • The ino64 mount option adds a fixed offset to 32bit inode numbers
    to bring them into the 64bit range. There's no need for this kind
    of debug tool given that it's easy to produce real 64bit inode numbers
    for testing.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Eric Sandeen
    Reviewed-by: Felix Blyakher

    Christoph Hellwig
     

09 Feb, 2009

1 commit


04 Dec, 2008

2 commits

  • There are a few inode flags around that aren't used anywhere, so remove
    them. Also update xfsidbg to display all used inode flags correctly.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Dave Chinner
    Signed-off-by: Niv Sardi

    Christoph Hellwig
     
  • ->link is guranteed to get an already reference inode passed so we
    can do a simple increment of i_count instead of using igrab and thus
    avoid banging on the global inode_lock. This is what most filesystems
    already do.

    Also move the increment after the call to xfs_link to simplify error
    handling.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Dave Chinner
    Signed-off-by: Niv Sardi

    Christoph Hellwig
     

01 Dec, 2008

1 commit

  • This adds the fiemap inode_operation, which for us converts the
    fiemap values & flags into a getbmapx structure which can be sent
    to xfs_getbmap. The formatter then copies the bmv array back into
    the user's fiemap buffer via the fiemap helpers.

    If we wanted to be more clever, we could also return mapping data
    for in-inode attributes, but I'm not terribly motivated to do that
    just yet.

    Signed-off-by: Eric Sandeen
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Niv Sardi

    Eric Sandeen