Re: [RFC][PATCH 8/14] Union-mount lookup

Bharata B Rao
2007-05-16T05:01:43Z

On Tue, May 15, 2007 at 09:57:24AM +0200, Jan Engelhardt wrote:
>
> On May 14 2007 15:12, Bharata B Rao wrote:
> >
> >+struct dentry * d_lookup_single(struct dentry *parent, struct qstr *name)
> >+{
> >+ struct dentry *dentry;
> >+ unsigned long seq;
> >+
> >+ do {
> >+ seq = read_seqbegin(&rename_lock);
> >+ dentry = __d_lookup_single(parent, name);
> >+ if (dentry)
> >+ break;
> >+ } while (read_seqretry(&rename_lock, seq));
> >+ return dentry;
> >+}
>
> Replace with tabs.

This is copied from fs/dcache.c:d_lookup() and the whitespaces came from there.
But that is not an excuse, will fix.

>
> >+lookup_union:
> >+ do {
> >+ struct vfsmount *mnt = find_mnt(topmost);
> >+ UM_DEBUG_DCACHE("name=\"%s\", inode=%p, device=%s\n",
> >+ topmost->d_name.name, topmost->d_inode,
> >+ mnt->mnt_devname);
> >+ mntput(mnt);
> >+ } while (0);
>
> Why the extra do{}while? [elsewhere too]

Not sure, may be to get a scope to define 'mnt' here. Jan ?

>
> >+ if (topmost->d_union) {
> >+ union_lock_spinlock(topmost, &topmost->d_lock);
> >+ }
>
> Extra {} could go [elsewhere too].
>
> >+ if (last->d_overlaid
> >+ && (last->d_overlaid != dentry)) {
>
> As can these extra () [elsewhere too].
>

Sure, will fix all these.

> >+static inline struct dentry * __lookup_hash_single(struct qstr *name, struct dentry *base, struct nameidata *nd)
> >+{
> >+ struct dentry *dentry;
> >+ struct inode *inode;
> >+ int err;
> >+
> >+ inode = base->d_inode;
> >+
> >+ err = permission(inode, MAY_EXEC, nd);
> >+ dentry = ERR_PTR(err);
> >+ if (err)
> >+ goto out;
> >+
> >+ dentry = __lookup_hash_kern_single(name, base, nd);
> >+out:
> >+ return dentry;
> >+}
>
> This looks a little big for being inline.

ok.

Regards,
Bharata.