incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Theodore Ts'o [EMAIL PROTECTED]
Acked-by: Jan Kara [EMAIL PROTECTED]
---
fs/ext3/ialloc.c| 58 ---
fs/ext3/inode.c | 25
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Theodore Ts'o [EMAIL PROTECTED]
Acked-by: Jan Kara [EMAIL PROTECTED]
---
fs/ext4/ialloc.c| 58 ---
fs/ext4/inode.c | 25
Stop the FAT filesystem from using iget() and read_inode(). Replace
the call to iget() with a call to ilookup().
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/fat/inode.c |6 ++
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index
error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/freevxfs/vxfs_extern.h |2 +-
fs/freevxfs/vxfs_inode.c | 45 +
fs/freevxfs/vxfs_lookup.c |6 +++---
fs/freevxfs/vxfs_super.c
Stop the FUSE filesystem from using read_inode(), which it doesn't use anyway.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/fuse/inode.c |6 --
1 files changed, 0 insertions(+), 6 deletions(-)
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 5448f62..2986654 100644
() returns any error incurred when getting the root inode.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/hfsplus/btree.c |6 --
fs/hfsplus/dir.c|6 +++---
fs/hfsplus/hfsplus_fs.h |3 +++
fs/hfsplus/super.c | 44
4
Stop the ISOFS filesystem from using read_inode(). Make isofs_read_inode()
return an error code, and make isofs_iget() pass it on.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/isofs/inode.c | 25 +
1 files changed, 17 insertions(+), 8 deletions(-)
diff --git
any error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/jffs2/dir.c |6 +++--
fs/jffs2/fs.c | 56 ---
fs/jffs2/os-linux.h |2 +-
fs/jffs2/super.c|1 -
4
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Dave Kleikamp [EMAIL PROTECTED]
---
fs/jfs/inode.c | 20
fs/jfs/jfs_inode.h |2 +-
fs/jfs/namei.c | 34 ++
fs/jfs
error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/minix/inode.c | 43 +--
fs/minix/minix.h |1 +
fs/minix/namei.c |7 +++
3 files changed, 33 insertions(+), 18 deletions
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/qnx4/inode.c | 45 ++---
fs/qnx4/namei.c |8 +---
include/linux/qnx4_fs.h |1 +
3 files changed, 36 insertions
Stop the PROCFS filesystem from using iget() and read_inode(). Merge
procfs_read_inode() into procfs_get_inode(), and have that call iget_locked()
instead of iget().
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/proc/inode.c | 60
Stop the SYSV filesystem from using iget() and read_inode(). Replace
sysv_read_inode() with sysv_iget(), and call that instead of iget().
sysv_iget() then uses iget_locked() directly and returns a proper error code
instead of an inode in the event of an error.
Signed-off-by: David Howells [EMAIL
error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/romfs/inode.c | 45 +++--
1 files changed, 31 insertions(+), 14 deletions(-)
diff --git a/fs/romfs/inode.c b/fs/romfs/inode.c
index
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/ufs/inode.c | 34 --
fs/ufs/namei.c |6 +++---
fs/ufs/super.c | 14 +-
include/linux/ufs_fs.h |2 +-
4 files
.
openpromfs_fill_super() returns any error incurred when getting the root inode
instead of ENOMEM (not that it currently incurs any other error).
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/openpromfs/inode.c | 45 ++---
1 files changed, 30 insertions
with inode number 0 - which forms the lookup key.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/hostfs/hostfs_kern.c | 58 ---
1 files changed, 39 insertions(+), 19 deletions(-)
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index
if the inode goes away.
(*) hppfs_iget() should perhaps subsume init_inode() and hppfs_read_inode().
(*) It would appear that all hppfs inodes are the same inode because iget()
was being called with inode number 0, which forms the lookup key.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs
)) {
ret = PTR_ERR(inode);
goto error;
}
Note that is_bad_inode() does not need to be called. The error returned by
thingyfs_iget() should render it unnecessary.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
Documentation/filesystems/Exporting |5
Roel Kluin [EMAIL PROTECTED] wrote:
+ if (IS_ERR(inode))
+ return ERR_PTR(-ENOMEM);
+ if (!(inode-i_state I_NEW))
+ return inode;
Don't you have to unlock_new_inode(inode) before returning?
In the first case, no because an OOM error was returned rather than an
error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/romfs/inode.c | 45 +++--
1 files changed, 31 insertions(+), 14 deletions(-)
diff --git a/fs/romfs/inode.c b/fs/romfs/inode.c
index
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/qnx4/inode.c | 45 ++---
fs/qnx4/namei.c |8 +---
include/linux/qnx4_fs.h |1 +
3 files changed, 36 insertions
error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/freevxfs/vxfs_extern.h |2 +-
fs/freevxfs/vxfs_inode.c | 45 +
fs/freevxfs/vxfs_lookup.c |6 +++---
fs/freevxfs/vxfs_super.c
Stop the FAT filesystem from using iget() and read_inode(). Replace
the call to iget() with a call to ilookup().
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/fat/inode.c |6 ++
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Theodore Ts'o [EMAIL PROTECTED]
Acked-by: Jan Kara [EMAIL PROTECTED]
---
fs/ext3/ialloc.c| 58 ---
fs/ext3/inode.c | 25
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Will Dyson [EMAIL PROTECTED]
---
fs/befs/linuxvfs.c | 39 +--
1 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/fs/befs/linuxvfs.c
Use iget_failed() in AFS to kill a failed inode.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/afs/inode.c |5 +
1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/fs/afs/inode.c b/fs/afs/inode.c
index d196840..ca9b02f 100644
--- a/fs/afs/inode.c
+++ b/fs/afs/inode.c
Introduce a function to register failure in an inode construction path. This
includes marking the inode under construction as bad, unlocking it and
releasing it.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
Documentation/filesystems/porting | 18 +-
fs/bad_inode.c
Convert instances of ERR_PTR(PTR_ERR(p)) to ERR_CAST(p) using:
perl -spi -e 's/ERR_PTR[(]PTR_ERR[(](.*)[)][)]/ERR_CAST(\1)/' `grep -rl
'ERR_PTR[(]*PTR_ERR' fs crypto net security`
Signed-off-by: David Howells [EMAIL PROTECTED]
---
crypto/cbc.c |2 +-
crypto/cryptd.c
Add an ERR_CAST() macro to complement ERR_PTR and co. for the purposes of
casting an error entyped as one pointer type to an error of another pointer
type whilst making it explicit as to what is going on.
This provides a replacement for the ERR_PTR(PTR_ERR(p)) construct.
Signed-off-by: David
Hi Linus,
Here's a set of patches that remove all calls to iget() and all read_inode()
functions. They should be removed for two reasons: firstly they don't lend
themselves to good error handling, and secondly their presence is a temptation
for code outside a filesystem to call iget() to
)) {
ret = PTR_ERR(inode);
goto error;
}
Note that is_bad_inode() does not need to be called. The error returned by
thingyfs_iget() should render it unnecessary.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
Documentation/filesystems/Exporting |5
if the inode goes away.
(*) hppfs_iget() should perhaps subsume init_inode() and hppfs_read_inode().
(*) It would appear that all hppfs inodes are the same inode because iget()
was being called with inode number 0, which forms the lookup key.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs
.
openpromfs_fill_super() returns any error incurred when getting the root inode
instead of ENOMEM (not that it currently incurs any other error).
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/openpromfs/inode.c | 45 ++---
1 files changed, 30 insertions
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/ufs/inode.c | 34 --
fs/ufs/namei.c |6 +++---
fs/ufs/super.c | 14 +-
include/linux/ufs_fs.h |2 +-
4 files
Stop the SYSV filesystem from using iget() and read_inode(). Replace
sysv_read_inode() with sysv_iget(), and call that instead of iget().
sysv_iget() then uses iget_locked() directly and returns a proper error code
instead of an inode in the event of an error.
Signed-off-by: David Howells [EMAIL
Stop the PROCFS filesystem from using iget() and read_inode(). Merge
procfs_read_inode() into procfs_get_inode(), and have that call iget_locked()
instead of iget().
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/proc/inode.c | 60
any error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/jffs2/dir.c |6 +++--
fs/jffs2/fs.c | 56 ---
fs/jffs2/os-linux.h |2 +-
fs/jffs2/super.c|1 -
4
Stop the ISOFS filesystem from using read_inode(). Make isofs_read_inode()
return an error code, and make isofs_iget() pass it on.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/isofs/inode.c | 25 +
1 files changed, 17 insertions(+), 8 deletions(-)
diff --git
() returns any error incurred when getting the root inode.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/hfsplus/btree.c |6 --
fs/hfsplus/dir.c|6 +++---
fs/hfsplus/hfsplus_fs.h |3 +++
fs/hfsplus/super.c | 47
Stop the FUSE filesystem from using read_inode(), which it doesn't use anyway.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/fuse/inode.c |6 --
1 files changed, 0 insertions(+), 6 deletions(-)
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 5448f62..2986654 100644
incurred when getting the root inode
instead of EACCES.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/efs/inode.c | 25 +
fs/efs/namei.c | 23 ---
fs/efs/super.c | 18 --
include/linux/efs_fs.h |2
error incurred when getting the root inode
instead of ENOMEM.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/cifs/cifsfs.c |8
fs/cifs/cifsfs.h |1 +
fs/cifs/inode.c | 35 ++-
3 files changed, 31 insertions(+), 13 deletions(-)
diff --git
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/bfs/bfs.h |2 ++
fs/bfs/dir.c |6 +++---
fs/bfs/inode.c | 32 ++--
3 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/fs/bfs/bfs.h b/fs
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/affs/affs.h |2 +-
fs/affs/amigaffs.c |6 --
fs/affs/inode.c| 20 +---
fs/affs/namei.c| 10 --
fs/affs/super.c| 12
Use iget_failed() in GFS2 to kill a failed inode.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/gfs2/inode.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 34f7bcd..498844f 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2
Stop the autofs filesystem from using iget() and read_inode(). Replace
autofs_read_inode() with autofs_iget(), and call that instead of iget().
autofs_iget() then uses iget_locked() directly and returns a proper error code
instead of an inode in the event of an error.
Signed-off-by: David
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Theodore Ts'o [EMAIL PROTECTED]
---
fs/ext2/ext2.h |2 +-
fs/ext2/inode.c | 30 ++
fs/ext2/namei.c | 12 ++--
fs/ext2/super.c | 32
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Theodore Ts'o [EMAIL PROTECTED]
Acked-by: Jan Kara [EMAIL PROTECTED]
---
fs/ext4/ialloc.c| 58 ---
fs/ext4/inode.c | 25
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Dave Kleikamp [EMAIL PROTECTED]
---
fs/jfs/inode.c | 20
fs/jfs/jfs_inode.h |2 +-
fs/jfs/namei.c | 34 ++
fs/jfs
with inode number 0 - which forms the lookup key.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/hostfs/hostfs_kern.c | 58 ---
1 files changed, 39 insertions(+), 19 deletions(-)
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index
Nick Piggin [EMAIL PROTECTED] wrote:
Is there any particular reason not to push these through -mm?
No.
David
-
To unsubscribe from this list: send the line unsubscribe linux-fsdevel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Trond Myklebust [EMAIL PROTECTED] wrote:
I thought you were passing a generic cred as an argument? It should be
possible to convert that into an rpc_cred.
Indeed I am, but I think I haven't gotten my questions across.
Take the rpc_cred struct as an example. It contains some stuff that is
Trond Myklebust [EMAIL PROTECTED] wrote:
What is a 'struct key'? Is that a credential?
It can represent one yes.
NO! Keyrings are meant for communicating with userspace. They should not
be used as a 'generic cache' in the kernel.
Erm, I'm pretty sure that keys are primarily for caching
Trond Myklebust [EMAIL PROTECTED] wrote:
Use the credential struct as the unique lookup key for an rpc_cred.
That's not good enough. A cred struct may map to several rpc_creds as I
mentioned above. I suppose the nfs_client struct address could be added
to the lookup key.
Huh? The
Here's a set of patches that remove all calls to iget() and all read_inode()
functions. They should be removed for two reasons: firstly they don't lend
themselves to good error handling, and secondly their presence is a temptation
for code outside a filesystem to call iget() to access inodes
Add an ERR_CAST() macro to complement ERR_PTR and co. for the purposes of
casting an error entyped as one pointer type to an error of another pointer
type whilst making it explicit as to what is going on.
This provides a replacement for the ERR_PTR(PTR_ERR(p)) construct.
Signed-off-by: David
Convert instances of ERR_PTR(PTR_ERR(p)) to ERR_CAST(p) using:
perl -spi -e 's/ERR_PTR[(]PTR_ERR[(](.*)[)][)]/ERR_CAST(\1)/' `grep -rl
'ERR_PTR[(]*PTR_ERR' fs crypto net security`
Signed-off-by: David Howells [EMAIL PROTECTED]
---
crypto/cbc.c |2 +-
crypto/cryptd.c
Introduce a function to register failure in an inode construction path. This
includes marking the inode under construction as bad, unlocking it and
releasing it.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
Documentation/filesystems/porting | 18 +-
fs/bad_inode.c
Use iget_failed() in AFS to kill a failed inode.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/afs/inode.c |5 +
1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/fs/afs/inode.c b/fs/afs/inode.c
index d196840..ca9b02f 100644
--- a/fs/afs/inode.c
+++ b/fs/afs/inode.c
Use iget_failed() in GFS2 to kill a failed inode.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/gfs2/inode.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 5f6dc32..c5285e2 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2
Stop the autofs filesystem from using iget() and read_inode(). Replace
autofs_read_inode() with autofs_iget(), and call that instead of iget().
autofs_iget() then uses iget_locked() directly and returns a proper error code
instead of an inode in the event of an error.
Signed-off-by: David
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Will Dyson [EMAIL PROTECTED]
---
fs/befs/linuxvfs.c | 39 +--
1 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/fs/befs/linuxvfs.c
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/bfs/bfs.h |2 ++
fs/bfs/dir.c |6 +++---
fs/bfs/inode.c | 32 ++--
3 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/fs/bfs/bfs.h b/fs
incurred when getting the root inode
instead of EACCES.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/efs/inode.c | 25 +
fs/efs/namei.c | 25 +
fs/efs/super.c | 18 --
include/linux/efs_fs.h |2
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Theodore Ts'o [EMAIL PROTECTED]
---
fs/ext2/ext2.h |2 +-
fs/ext2/inode.c | 29 +
fs/ext2/namei.c | 12 ++--
fs/ext2/super.c | 32
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Theodore Ts'o [EMAIL PROTECTED]
Acked-by: Jan Kara [EMAIL PROTECTED]
---
fs/ext3/ialloc.c| 58 ---
fs/ext3/inode.c | 25
Stop the ISOFS filesystem from using read_inode(). Make isofs_read_inode()
return an error code, and make isofs_iget() pass it on.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/isofs/inode.c | 25 +
1 files changed, 17 insertions(+), 8 deletions(-)
diff --git
Stop the FAT filesystem from using iget() and read_inode(). Replace
the call to iget() with a call to ilookup().
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/fat/inode.c |6 ++
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index
any error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/jffs2/dir.c |6 +++--
fs/jffs2/fs.c | 56 ---
fs/jffs2/os-linux.h |2 +-
fs/jffs2/super.c|1 -
4
error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/freevxfs/vxfs_extern.h |2 +-
fs/freevxfs/vxfs_inode.c | 45 +
fs/freevxfs/vxfs_lookup.c |6 +++---
fs/freevxfs/vxfs_super.c
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Dave Kleikamp [EMAIL PROTECTED]
---
fs/jfs/inode.c | 20
fs/jfs/jfs_inode.h |2 +-
fs/jfs/namei.c | 34 ++
fs/jfs
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
Acked-by: Theodore Ts'o [EMAIL PROTECTED]
Acked-by: Jan Kara [EMAIL PROTECTED]
---
fs/ext4/ialloc.c| 58 ---
fs/ext4/inode.c | 25
error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/minix/inode.c | 43 +--
fs/minix/minix.h |1 +
fs/minix/namei.c |7 +++
3 files changed, 33 insertions(+), 18 deletions
Stop the FUSE filesystem from using read_inode(), which it doesn't use anyway.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/fuse/inode.c |6 --
1 files changed, 0 insertions(+), 6 deletions(-)
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 9a68d69..e50be15 100644
() returns any error incurred when getting the root inode.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/hfsplus/btree.c |6 --
fs/hfsplus/dir.c|6 +++---
fs/hfsplus/hfsplus_fs.h |3 +++
fs/hfsplus/super.c | 47
error incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/romfs/inode.c | 45 +++--
1 files changed, 31 insertions(+), 14 deletions(-)
diff --git a/fs/romfs/inode.c b/fs/romfs/inode.c
index
Stop the SYSV filesystem from using iget() and read_inode(). Replace
sysv_read_inode() with sysv_iget(), and call that instead of iget().
sysv_iget() then uses iget_locked() directly and returns a proper error code
instead of an inode in the event of an error.
Signed-off-by: David Howells [EMAIL
incurred when getting the root inode
instead of EINVAL.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/ufs/inode.c | 34 --
fs/ufs/namei.c |6 +++---
fs/ufs/super.c | 14 +-
fs/ufs/ufs.h |2 +-
4 files changed, 33 insertions(+), 23
.
openpromfs_fill_super() returns any error incurred when getting the root inode
instead of ENOMEM (not that it currently incurs any other error).
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/openpromfs/inode.c | 45 ++---
1 files changed, 30 insertions
Stop the PROCFS filesystem from using iget() and read_inode(). Merge
procfs_read_inode() into procfs_get_inode(), and have that call iget_locked()
instead of iget().
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/proc/inode.c | 60
with inode number 0 - which forms the lookup key.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/hostfs/hostfs_kern.c | 59 +++
1 files changed, 39 insertions(+), 20 deletions(-)
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index
if the inode goes away.
(*) hppfs_iget() should perhaps subsume init_inode() and hppfs_read_inode().
(*) It would appear that all hppfs inodes are the same inode because iget()
was being called with inode number 0, which forms the lookup key.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs
)) {
ret = PTR_ERR(inode);
goto error;
}
Note that is_bad_inode() does not need to be called. The error returned by
thingyfs_iget() should render it unnecessary.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
Documentation/filesystems/Locking |3
Add an ERR_CAST() function to complement ERR_PTR and co. for the purposes of
casting an error entyped as one pointer type to an error of another pointer
type whilst making it explicit as to what is going on.
This provides a replacement for the ERR_PTR(PTR_ERR(p)) construct.
Signed-off-by: David
Add an ERR_CAST() function to complement ERR_PTR and co. for the purposes of
casting an error entyped as one pointer type to an error of another pointer
type whilst making it explicit as to what is going on.
This provides a replacement for the ERR_PTR(PTR_ERR(p)) construct.
Signed-off-by: David
Andrew Morton [EMAIL PROTECTED] wrote:
Not completely trivial - the ino_t - unsigned long conversion needs to be
propagated fairly widely in there.
I'll just make it unsigned long. That's what iget() took as the inode number
parameter type, so it can't behave any differently as a first guess.
David Howells [EMAIL PROTECTED] wrote:
Not completely trivial - the ino_t - unsigned long conversion needs to be
propagated fairly widely in there.
I'll just make it unsigned long. That's what iget() took as the inode number
parameter type, so it can't behave any differently as a first
Use ino_t consistently for vxfs_iget() and its declaration, rather than using
ino_t for one and unsigned long for the other.
Signed-off-by: David Howells [EMAIL PROTECTED]
---
fs/freevxfs/vxfs_extern.h |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fs/freevxfs
Nick Piggin [EMAIL PROTECTED] wrote:
- ASSERTCMP(start + len, =, PAGE_SIZE);
+ ASSERTCMP(len, =, PAGE_CACHE_SIZE);
Do you guarantee this will work if PAGE_CACHE_SIZE != PAGE_SIZE? If not, you
can't make this particular change.
Do we ever intend to have PAGE_CACHE_SIZE != PAGE_SIZE?
Nick Piggin [EMAIL PROTECTED] wrote:
PAGE_CACHE_SIZE should be used to address the pagecache.
Perhaps, but the function being called from there takes pages not page cache
slots. If I have to allow for PAGE_CACHE_SIZE PAGE_SIZE then I need to
modify my code, if not then the assertion needs to
Nick Piggin [EMAIL PROTECTED] wrote:
It takes a pagecache page, yes. If you follow convention, you use
PAGE_CACHE_SIZE for that guy. You don't have to allow PAGE_CACHE_SIZE !=
PAGE_SIZE, and if all the rest of your code is in units of PAGE_SIZE, then
obviously my changing of just the one unit
Nick Piggin [EMAIL PROTECTED] wrote:
The problem is that the code called assumes that the struct page *
argument points to a single page, not an array of pages as would
presumably be the case if PAGE_CACHE_SIZE PAGE_SIZE.
Incorrect. Christoph's patch for example does this by using
Are we ever going to have PAGE_CACHE_SIZE != PAGE_SIZE? If not, why not
discard PAGE_CACHE_SIZE as it's then redundant.
PAGE_CACHE_SIZE is also an ill-defined concept. Just grep in Documentation/
and it only comes up in a couple of places, neither particularly informative.
If there's a
Nick Piggin [EMAIL PROTECTED] wrote:
Christoph Lameter has patches exactly to make PAGE_CACHE_SIZE larger than
PAGE_SIZE, and they seem to work without much effort. I happen to hate the
patches ;) but that doesn't change the fact that PAGE_CACHE_SIZE is
relatively useful and it is not at all
Nick Piggin [EMAIL PROTECTED] wrote:
It can be pretty well any power of 2 from PAGE_SIZE upwards, with
compound pages. None of the filesystems should really care at all.
It's not even a new concept, hugetlbfs uses HPAGE_SIZE...
Ummm... The filesystem has to care. If the VFS/VM says 'fill
Nick Piggin [EMAIL PROTECTED] wrote:
So you're saying a struct page controls an area of PAGE_CACHE_SIZE, not an
area of PAGE_SIZE?
No, a pagecache page is PAGE_CACHE_SIZE.
That doesn't answer my question. I didn't ask about 'pagecache pages' per se.
Are you saying then that a page
Benny Halevy [EMAIL PROTECTED] wrote:
I think that what Nick was trying to say is that PAGE_CACHE_SIZE should
always be used properly as the size of the memory struct Page covers (while
PAGE_SIZE is the hardware page size and the constraint is that
PAGE_CACHE_SIZE == (PAGE_SIZE k) for some k
FRV looks okay.
Acked-By: David Howells [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe linux-fsdevel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html
These patches add local caching for network filesystems such as NFS.
The patches can roughly be broken down into a number of sets:
(*) 01-keys-inc-payload.diff
(*) 02-keys-search-keyring.diff
(*) 03-keys-callout-blob.diff
Three patches to the keyring code made to help the CIFS
201 - 300 of 417 matches
Mail list logo