mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
[PATCH] reduce the stack footprint of exportfs_decode_fh()
no need to have _two_ 256-byte arrays on stack... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
9308a6128d
commit
f3f8e17571
1 changed files with 4 additions and 5 deletions
|
@ -94,9 +94,8 @@ find_disconnected_root(struct dentry *dentry)
|
||||||
* It may already be, as the flag isn't always updated when connection happens.
|
* It may already be, as the flag isn't always updated when connection happens.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
reconnect_path(struct vfsmount *mnt, struct dentry *target_dir)
|
reconnect_path(struct vfsmount *mnt, struct dentry *target_dir, char *nbuf)
|
||||||
{
|
{
|
||||||
char nbuf[NAME_MAX+1];
|
|
||||||
int noprogress = 0;
|
int noprogress = 0;
|
||||||
int err = -ESTALE;
|
int err = -ESTALE;
|
||||||
|
|
||||||
|
@ -360,6 +359,7 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
|
||||||
{
|
{
|
||||||
const struct export_operations *nop = mnt->mnt_sb->s_export_op;
|
const struct export_operations *nop = mnt->mnt_sb->s_export_op;
|
||||||
struct dentry *result, *alias;
|
struct dentry *result, *alias;
|
||||||
|
char nbuf[NAME_MAX+1];
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -379,7 +379,7 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
|
||||||
* filesystem root.
|
* filesystem root.
|
||||||
*/
|
*/
|
||||||
if (result->d_flags & DCACHE_DISCONNECTED) {
|
if (result->d_flags & DCACHE_DISCONNECTED) {
|
||||||
err = reconnect_path(mnt, result);
|
err = reconnect_path(mnt, result, nbuf);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_result;
|
goto err_result;
|
||||||
}
|
}
|
||||||
|
@ -395,7 +395,6 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
|
||||||
* It's not a directory. Life is a little more complicated.
|
* It's not a directory. Life is a little more complicated.
|
||||||
*/
|
*/
|
||||||
struct dentry *target_dir, *nresult;
|
struct dentry *target_dir, *nresult;
|
||||||
char nbuf[NAME_MAX+1];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* See if either the dentry we just got from the filesystem
|
* See if either the dentry we just got from the filesystem
|
||||||
|
@ -429,7 +428,7 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
|
||||||
* connected to the filesystem root. The VFS really doesn't
|
* connected to the filesystem root. The VFS really doesn't
|
||||||
* like disconnected directories..
|
* like disconnected directories..
|
||||||
*/
|
*/
|
||||||
err = reconnect_path(mnt, target_dir);
|
err = reconnect_path(mnt, target_dir, nbuf);
|
||||||
if (err) {
|
if (err) {
|
||||||
dput(target_dir);
|
dput(target_dir);
|
||||||
goto err_result;
|
goto err_result;
|
||||||
|
|
Loading…
Reference in a new issue