Re: pre8, modules, vfat.o unresolved symbol(s)

Garst R. Reese (reese@isn.net)
Sun, 17 Jan 1999 13:34:21 -0400


Hello again Al. Your patch still has some problems. One is an obvious
extra ; in dcache.h, but fixing that leaves warnings abour return type
defaulting to int and control reaches end of non-void function.
See below:
Alexander Viro wrote:
>
> On Fri, 15 Jan 1999, Garst R. Reese wrote:
>
> > Thats about it.
> Yes. You could mention which symbols those were, but anyway.
> d_invalidate(). Yes, it's what we need but it is not exported.
>
> Linus, I'm putting it to ksyms.c, but it might feel better in
> dcache.h (inlined && less stuff in export list). Up to you. IMHO the less
> things we export the less chances that a driver written by Foobar Bogonics
> will bite us in the next year when we'll remove/redo something.
>
> --- linux/fs/vfat/namei.c.old Fri Jan 15 02:46:34 1999
> +++ linux/fs/vfat/namei.c Fri Jan 15 03:02:38 1999
> @@ -1726,6 +1726,13 @@
> }
>
> if (res >= 0) {
> + if (new_inode) {
> + /* probably we should do it only for directories,
> + * but that would require lambda-expanding the
> + * call of vfat_unlink(). FIXME.
> + */
> + d_rehash(new_dentry);
> + }
> d_move(old_dentry, new_dentry);
> res = 0;
> }
> --- linux/fs/dcache.c.old Fri Jan 15 02:52:32 1999
> +++ linux/fs/dcache.c Fri Jan 15 02:54:07 1999
> @@ -677,12 +677,11 @@
> d_drop(dentry);
> }
>
> -void d_add(struct dentry * entry, struct inode * inode)
> +void d_rehash(struct dentry * entry)
> {
> struct dentry * parent = entry->d_parent;
>
> list_add(&entry->d_hash, d_hash(parent, entry->d_name.hash));
> - d_instantiate(entry, inode);
> }
>
> #define do_switch(x,y) do { \
> --- linux/kernel/ksyms.c.old Fri Jan 15 02:54:45 1999
> +++ linux/kernel/ksyms.c Fri Jan 15 02:55:00 1999
> @@ -121,7 +121,8 @@
> EXPORT_SYMBOL(d_alloc_root);
> EXPORT_SYMBOL(d_delete);
> EXPORT_SYMBOL(d_validate);
> -EXPORT_SYMBOL(d_add);
> +EXPORT_SYMBOL(d_rehash);
> +EXPORT_SYMBOL(d_invalidate); /* May be it will be better in dcache.h? */
> EXPORT_SYMBOL(d_move);
> EXPORT_SYMBOL(d_instantiate);
> EXPORT_SYMBOL(d_alloc);
> --- linux/include/linux/dcache.h.old Fri Jan 15 02:55:11 1999
> +++ linux/include/linux/dcache.h Fri Jan 15 02:58:05 1999
> @@ -150,10 +150,18 @@
> extern int is_root_busy(struct dentry *);
>
> /*
> + * This adds the entry to the hash queues.
> + */
> +extern void d_rehash(struct dentry * entry);
> +/*
> * This adds the entry to the hash queues and initializes "d_inode".
> * The entry was actually filled in earlier during "d_alloc()"
> */
> -extern void d_add(struct dentry * entry, struct inode * inode);
PROBLEM STARTS HERE:
> +static __inline__ d_add(struct dentry * entry, struct inode * inode);

> +{
> + d_rehash(entry);
> + d_instantiate(entry, inode);
> +}
DID YOU MEAN TO RETURN ANYTHING?
> /* used for rename() and baskets */
> extern void d_move(struct dentry * entry, struct dentry * newdentry);

-- 
Thanks, Garst

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/