22 May, 2010

1 commit


03 Dec, 2009

2 commits

  • These two functions are altered so that gfs2_quota_sync may
    in future be called directly from the VFS. The GFS2 superblock
    changes to a VFS super block and there is an addition of an int
    argument which is currently ignored.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • We have a long term plan to use the "-o meta" flag to GFS2 mounts to
    access the alternate root which is used to store metadata for a GFS2
    filesystem. This will allow us to eventually remove support for the
    gfs2meta filesystem type (which is in any case just a "front end" to
    the gfs2 filesystem type with the meta/master root).

    Currently the "-o meta" option is only taken into account on the
    initial mount of the filesystem. Subsequent mounts of the same
    filesystem (i.e. on the same device) result in basically the same
    as bind mounting the root of the original mount.

    This patch changes that by using what is more or less a copy
    of get_sb_bdev() and extending it so that it will take into
    account the alternate root in all cases. The main difference
    is that we have to parse the mount options a bit earlier. We can
    then use them to select the appropriate root towards the end of
    the function.

    In addition this also fixes a bug where it was possible (but certainly
    not desirable) to set different ro/rw options for the meta root
    when mounted via the gfs2meta fs compared with the original mount.

    Signed-off-by: Steven Whitehouse
    Cc: Alexander Viro

    Steven Whitehouse
     

27 Aug, 2009

1 commit

  • This has been on my list for some time. We need to change the way
    in which we handle extended attributes to allow faster file creation
    times (by reducing the number of transactions required) and the
    extended attribute code is the main obstacle to this.

    In addition to that, the VFS provides a way to demultiplex the xattr
    calls which we ought to be using, rather than rolling our own. This
    patch changes the GFS2 code to use that VFS feature and as a result
    the code shrinks by a couple of hundred lines or so, and becomes
    easier to read.

    I'm planning on doing further clean up work in this area, but this
    patch is a good start. The cleaned up code also uses the more usual
    "xattr" shorthand, I plan to eliminate the use of "eattr" eventually
    and in the mean time it serves as a flag as to which bits of the code
    have been updated.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     

17 Aug, 2009

1 commit

  • We already have an offline uevent (used when a withdraw occurs)
    but no online uevent. This adds an online uevent so that userspace
    will be able to detect a successful mount by means other than
    not receiving a remove event after the add & recovery (change)
    uevents.

    It has also been added to the remount path as well - we can't use
    a change uevent there as older GFS2 userspace acts on change uevents
    according to the state that it thinks the fs is in, so we can't
    easily add any new ones.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     

30 Jul, 2009

1 commit

  • GFS2 wasn't syncing its statfs info on grows. This causes a problem
    when you grow the filesystem on multiple nodes. GFS2 would calculate
    the new space based on the resource groups (which are always current),
    and then assume that the filesystem had grown the from the existing
    statfs size. If you grew the filesystem on two different nodes in a
    short time, the second node wouldn't see the statfs size change from the
    first node, and would assume that it was grown by a larger amount than
    it was. When all these changes were synced out, the total fileystem
    size would be incorrect (the first grow would be counted twice).

    This patch syncs makes GFS2 read in the statfs changes from disk before
    a grow, and write them out after the grow, while the master statfs inode
    is locked.

    Signed-off-by: Benjamin Marzinski
    Signed-off-by: Steven Whitehouse

    Benjamin Marzinski
     

28 Mar, 2009

2 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (37 commits)
    fs: avoid I_NEW inodes
    Merge code for single and multiple-instance mounts
    Remove get_init_pts_sb()
    Move common mknod_ptmx() calls into caller
    Parse mount options just once and copy them to super block
    Unroll essentials of do_remount_sb() into devpts
    vfs: simple_set_mnt() should return void
    fs: move bdev code out of buffer.c
    constify dentry_operations: rest
    constify dentry_operations: configfs
    constify dentry_operations: sysfs
    constify dentry_operations: JFS
    constify dentry_operations: OCFS2
    constify dentry_operations: GFS2
    constify dentry_operations: FAT
    constify dentry_operations: FUSE
    constify dentry_operations: procfs
    constify dentry_operations: ecryptfs
    constify dentry_operations: CIFS
    constify dentry_operations: AFS
    ...

    Linus Torvalds
     
  • Signed-off-by: Al Viro

    Al Viro
     

24 Mar, 2009

1 commit

  • The following patch fixes an issue relating to remount and argument
    parsing. After this fix is applied, remount becomes atomic in that
    it either succeeds changing the mount to the new state, or it fails
    and leaves it in the old state. Previously it was possible for the
    parsing of options to fail part way though and for the fs to be left
    in a state where some of the new arguments had been applied, but some
    had not.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     

05 Jan, 2009

5 commits

  • This reverts commit 78802499912f1ba31ce83a94c55b5a980f250a43.

    The original patch is causing problems in relation to order of
    operations at umount in relation to jdata files. I need to fix
    this a different way.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • There was a use-after-free with the GFS2 super block during
    umount. This patch moves almost all of the umount code from
    ->put_super into ->kill_sb, the only bit that cannot be moved
    being the glock hash clearing which has to remain as ->put_super
    due to umount ordering requirements. As a result its now obvious
    that the kfree is the final operation, whereas before it was
    hidden in ->put_super.

    Also gfs2_jindex_free is then only referenced from a single file
    so thats moved and marked static too.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • The functions which are being moved can all be marked
    static in their new locations, since they only have
    a single caller each. Their new locations are more
    logical than before and some of the functions are
    small enough that the compiler might well inline them.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • gfs2_lock_fs_check_clean() should not be calling gfs2_jindex_hold()
    since it doesn't work like rindex hold, despite the comment. That
    allows gfs2_jindex_hold() to be moved into ops_fstype.c where it
    can be made static.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     
  • Move the contents of some headers which contained very
    little into more sensible places, and remove the original
    header files. This should make it easier to find things.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     

13 Aug, 2008

1 commit

  • This patch is intended to fix the issues reported in bz #457798. Instead
    of having the metafs as a separate filesystem, it becomes a second root
    of gfs2. As a result it will appear as type gfs2 in /proc/mounts, but it
    is still possible (for backwards compatibility purposes) to mount it as
    type gfs2meta. A new mount flag "meta" is introduced so that its possible
    to tell the two cases apart in /proc/mounts.

    As a result it becomes possible to mount type gfs2 with -o meta and
    get the same result as mounting type gfs2meta. So it is possible to
    mount just the metafs on its own. Currently if you do this, its then
    impossible to mount the "normal" root of the gfs2 filesystem without
    first unmounting the metafs root. I'm not sure if thats a feature or
    a bug :-)

    Either way, this is a great improvement on the previous scheme and I've
    verified that it works ok with bind mounts on both the "normal" root
    and the metafs root in various combinations.

    There were also a bunch of functions in super.c which didn't belong there,
    so this moves them into ops_fstype.c where they can be static. Hopefully
    the mount/umount sequence is now more obvious as a result.

    Signed-off-by: Steven Whitehouse
    Cc: Alexander Viro

    Steven Whitehouse
     

31 Mar, 2008

1 commit

  • The functions in lm.c were just wrappers which were mostly
    only used in one other file. By moving the functions to
    the files where they are being used, they can be marked
    static and also this will usually result in them being inlined
    since they are often only used from one point in the code.

    A couple of really trivial functions have been inlined by hand
    into the function which called them as it makes the code clearer
    to do that.

    We also gain from one fewer function call in the glock lock and
    unlock paths.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     

09 Jul, 2007

1 commit

  • This patch fixes some sign issues which were accidentally introduced
    into the quota & statfs code during the endianess annotation process.
    Also included is a general clean up which moves all of the _host
    structures out of gfs2_ondisk.h (where they should not have been to
    start with) and into the places where they are actually used (often only
    one place). Also those _host structures which are not required any more
    are removed entirely (which is the eventual plan for all of them).

    The conversion routines from ondisk.c are also moved into the places
    where they are actually used, which for almost every one, was just one
    single place, so all those are now static functions. This also cleans up
    the end of gfs2_ondisk.h which no longer needs the #ifdef __KERNEL__.

    The net result is a reduction of about 100 lines of code, many functions
    now marked static plus the bug fixes as mentioned above. For good
    measure I ran the code through sparse after making these changes to
    check that there are no warnings generated.

    This fixes Red Hat bz #239686

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     

30 Nov, 2006

2 commits


02 Oct, 2006

1 commit

  • For some reason we had two different sets of code for reading in the
    superblock. This removes one of them in favour of the other. Also we
    don't need the temporary buffer for the sb since we already have one
    in the gfs2 sb itself.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     

05 Sep, 2006

2 commits


01 Sep, 2006

1 commit

  • As per comments from Jan Engelhardt this
    updates the copyright message to say "version" in full rather than
    "v.2". Also incore.h has been updated to remove forward structure
    declarations which are not required.

    The gfs2_quota_lvb structure has now had endianess annotations added
    to it. Also quota.c has been updated so that we now store the
    lvb data locally in endian independant format to avoid needing
    a structure in host endianess too. As a result the endianess
    conversions are done as required at various points and thus the
    conversion routines in lvb.[ch] are no longer required. I've
    moved the one remaining constant in lvb.h thats used into lm.h
    and removed the unused lvb.[ch].

    I have not changed the HIF_ constants. That is left to a later patch
    which I hope will unify the gh_flags and gh_iflags fields of the
    struct gfs2_holder.

    Cc: Jan Engelhardt
    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     

19 May, 2006

1 commit


28 Apr, 2006

1 commit

  • This patch contains the following possible cleanups:
    - make needlessly global code static
    - #if 0 unused functions
    - remove the following global function that was both unused and
    unimplemented:
    - super.c: gfs2_do_upgrade()

    Signed-off-by: Adrian Bunk
    Signed-off-by: Steven Whitehouse

    Adrian Bunk
     

02 Mar, 2006

1 commit

  • We no longer lookup ".gfs2_admin" in the root directory in order to
    find it, but instead use the inode number given in the superblock.
    Both the root directory and the admin directory are now looked up using
    the same routine, so the redundant code is removed.

    Also, there is no longer a reference to the root inode in the
    GFS2 super block. When required this can be retreived via
    sb->s_root->d_inode instead.

    Assuming that we introduce a metadata filesystem type for GFS, then
    this is a first step towards that goal.

    Signed-off-by: Steven Whitehouse

    Steven Whitehouse
     

17 Jan, 2006

1 commit