On Mon, Jan 09, 2017 at 09:31:39AM -0600, Eric Sandeen wrote:
> On 1/8/17 8:11 PM, Qu Wenruo wrote:
> > 
> > 
> > At 01/08/2017 09:16 PM, Goldwyn Rodrigues wrote:
> >>
> >> 1. Motivation
> >> While fixing user space tools for btrfs-progs, I found a couple of bugs
> >> which are already solved in kernel space but were not ported to user
> >> space. User space is a little ignored when it comes to fixing bugs in
> >> the core functionality. XFS developers have already performed this and
> >> the userspace and kernel code walks in lockstep for libxfs.
> > 
> > Personally speaking, I'm not a fan of re-using kernel code in btrfs-progs.
> 
> But it already does re-use kernel code, it's just that the re-use is
> extremely stale, with unfixed bugs in both directions as a result
> (at least last time I looked.)
> 
> > In fact, in btrfs-progs, we don't need a lot of kernel facilities,
> > like page/VFS/lock(btrfs-progs works in single thread under most
> > case).
> > 
> > And that should make btrfs-progs easier to maintain.
> 
> But as Goldwyn already pointed out, many bugs have gone un-fixed
> in userspace, in code which was forked long ago from kernelspace.
> 
> For things like locking it's trivial to define that away.
> 
> xfsprogs does i.e. -
> 
> /* miscellaneous kernel routines not in user space */
> #define down_read(a)            ((void) 0)
> #define up_read(a)              ((void) 0)
> #define spin_lock_init(a)       ((void) 0)
> #define spin_lock(a)            ((void) 0)
> #define spin_unlock(a)          ((void) 0)
> #define likely(x)               (x)
> #define unlikely(x)             (x)
> #define rcu_read_lock()         ((void) 0)
> #define rcu_read_unlock()       ((void) 0)
> #define WARN_ON_ONCE(expr)      ((void) 0)
> 
> 
> > Furthermore, there are cases while kernel is doing things wrong while
> > btrfs-progs does it right.
> 
> All the more reason to sync it up, fixes should always be in both
> places, right?
> 
> I had looked at this a few years ago, and started trying to sync things
> up, but got daunted and busy and never completed anything.  :(  I sent
> a few fixups back in April 2013 to get things /slightly/ closer.
> 
> The libxfs sync in xfs has borne fruit; I'm of the opinion that similar
> work would help btrfs too, though it can be a long road.
> 
> (e2fsprogs has gone the other way, and has a completely separate
> re-implementation in userspace; it works, I guess, but I have to say
> that I really like the code commonality in xfs.)
> 

Yup, I also think we should be going in the XFS direction. It's a big
maintenance burden to have to worry about the code in two places. (E.g.,
the biggest reason I haven't gotten around to implementing full free
space tree support in btrfs-progs is that it's such a pain in the ass to
port new kernel code to the outdated progs code.)

As far as I know, the only reason it hasn't happened yet is that no one
has agreed to do it, and we're all just hoping someone else will take
care of it.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to