06 Jan, 2009

2 commits


20 Nov, 2008

2 commits


26 Sep, 2008

1 commit


25 Sep, 2008

4 commits

  • File syncs and directory syncs are optimized by copying their
    items into a special (copy-on-write) log tree. There is one log tree per
    subvolume and the btrfs super block points to a tree of log tree roots.

    After a crash, items are copied out of the log tree and back into the
    subvolume. See tree-log.c for all the details.

    Signed-off-by: Chris Mason

    Chris Mason
     
  • Date: Mon, 21 Jul 2008 02:01:56 +0530
    Here's an implementation of NFS support for btrfs. It relies on the
    fixes which are going in to 2.6.28 for the NFS readdir/lookup deadlock.

    This uses the btrfs_iget helper introduced previously.

    [dwmw2: Tidy up a little, switch to d_obtain_alias() w/compat routine,
    change fh_type, store parent's root object ID where needed,
    fix some get_parent() and fs_to_dentry() bugs]

    Signed-off-by: Balaji Rao
    Signed-off-by: David Woodhouse
    Signed-off-by: Chris Mason

    Balaji Rao
     
  • Add backwards compatibility in compat.h

    Signed-off-by: David Woodhouse
    ---
    compat.h | 3 +++
    extent_io.c | 3 ++-
    2 files changed, 5 insertions(+), 1 deletions(-)

    Signed-off-by: Chris Mason

    David Woodhouse
     
  • In openSUSE 10.3, AppArmor modifies remove_suid to take a struct path
    rather than just a dentry. This patch tests that the kernel is openSUSE
    10.3 or newer and adjusts the call accordingly.

    Debian/Ubuntu with AppArmor applied will also need a similar patch.
    Maintainers of btrfs under those distributions should build on this
    patch or, alternatively, alter their package descriptions to add
    -DREMOVE_SUID_PATH to the compiler command line.

    Signed-off-by: Jeff Mahoney
    - --- /dev/null 1970-01-01 00:00:00.000000000 +0000
    +++ b/compat.h 2008-02-06 16:46:13.000000000 -0500
    @@ -0,0 +1,15 @@
    +#ifndef _COMPAT_H_
    +#define _COMPAT_H_
    +
    +
    +/*
    + * Even if AppArmor isn't enabled, it still has different prototypes.
    + * Add more distro/version pairs here to declare which has AppArmor applied.
    + */
    +#if defined(CONFIG_SUSE_KERNEL)
    +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
    +# define REMOVE_SUID_PATH 1
    +# endif
    +#endif
    +
    +#endif /* _COMPAT_H_ */
    - --- a/file.c 2008-02-06 11:37:39.000000000 -0500
    +++ b/file.c 2008-02-06 16:46:23.000000000 -0500
    @@ -37,6 +37,7 @@
    #include "ordered-data.h"
    #include "ioctl.h"
    #include "print-tree.h"
    +#include "compat.h"

    static int btrfs_copy_from_user(loff_t pos, int num_pages, int write_bytes,
    @@ -790,7 +791,11 @@ static ssize_t btrfs_file_write(struct f
    goto out_nolock;
    if (count == 0)
    goto out_nolock;
    +#ifdef REMOVE_SUID_PATH
    + err = remove_suid(&file->f_path);
    +#else
    err = remove_suid(fdentry(file));
    +#endif
    if (err)
    goto out_nolock;
    file_update_time(file);

    Signed-off-by: Chris Mason

    Jeff Mahoney