Commit 82398619 authored by Adrian Bunk's avatar Adrian Bunk Committed by Linus Torvalds

[PATCH] ext3 cleanups

- make some needlessly global code static
- super.c: remove the unused global function ext3_panic
Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent b69ae6c2
...@@ -1451,7 +1451,7 @@ static inline int test_root(int a, int b) ...@@ -1451,7 +1451,7 @@ static inline int test_root(int a, int b)
} }
} }
int ext3_group_sparse(int group) static int ext3_group_sparse(int group)
{ {
return (test_root(group, 3) || test_root(group, 5) || return (test_root(group, 3) || test_root(group, 5) ||
test_root(group, 7)); test_root(group, 7));
......
...@@ -306,7 +306,7 @@ static void free_rb_tree_fname(struct rb_root *root) ...@@ -306,7 +306,7 @@ static void free_rb_tree_fname(struct rb_root *root)
} }
struct dir_private_info *create_dir_info(loff_t pos) static struct dir_private_info *create_dir_info(loff_t pos)
{ {
struct dir_private_info *p; struct dir_private_info *p;
......
...@@ -39,6 +39,8 @@ ...@@ -39,6 +39,8 @@
#include "xattr.h" #include "xattr.h"
#include "acl.h" #include "acl.h"
static int ext3_writepage_trans_blocks(struct inode *inode);
/* /*
* Test whether an inode is a fast symlink. * Test whether an inode is a fast symlink.
*/ */
...@@ -2807,7 +2809,7 @@ int ext3_setattr(struct dentry *dentry, struct iattr *attr) ...@@ -2807,7 +2809,7 @@ int ext3_setattr(struct dentry *dentry, struct iattr *attr)
* block and work out the exact number of indirects which are touched. Pah. * block and work out the exact number of indirects which are touched. Pah.
*/ */
int ext3_writepage_trans_blocks(struct inode *inode) static int ext3_writepage_trans_blocks(struct inode *inode)
{ {
int bpp = ext3_journal_blocks_per_page(inode); int bpp = ext3_journal_blocks_per_page(inode);
int indirects = (EXT3_NDIR_BLOCKS % bpp) ? 5 : 3; int indirects = (EXT3_NDIR_BLOCKS % bpp) ? 5 : 3;
......
...@@ -285,7 +285,7 @@ static int setup_new_group_blocks(struct super_block *sb, ...@@ -285,7 +285,7 @@ static int setup_new_group_blocks(struct super_block *sb,
* sequence of powers of 3, 5, and 7: 1, 3, 5, 7, 9, 25, 27, 49, 81, ... * sequence of powers of 3, 5, and 7: 1, 3, 5, 7, 9, 25, 27, 49, 81, ...
* For a non-sparse filesystem it will be every group: 1, 2, 3, 4, ... * For a non-sparse filesystem it will be every group: 1, 2, 3, 4, ...
*/ */
unsigned ext3_list_backups(struct super_block *sb, unsigned *three, static unsigned ext3_list_backups(struct super_block *sb, unsigned *three,
unsigned *five, unsigned *seven) unsigned *five, unsigned *seven)
{ {
unsigned *min = three; unsigned *min = three;
......
...@@ -50,6 +50,13 @@ static void ext3_mark_recovery_complete(struct super_block * sb, ...@@ -50,6 +50,13 @@ static void ext3_mark_recovery_complete(struct super_block * sb,
static void ext3_clear_journal_err(struct super_block * sb, static void ext3_clear_journal_err(struct super_block * sb,
struct ext3_super_block * es); struct ext3_super_block * es);
static int ext3_sync_fs(struct super_block *sb, int wait); static int ext3_sync_fs(struct super_block *sb, int wait);
static const char *ext3_decode_error(struct super_block * sb, int errno,
char nbuf[16]);
static int ext3_remount (struct super_block * sb, int * flags, char * data);
static int ext3_statfs (struct super_block * sb, struct kstatfs * buf);
static void ext3_unlockfs(struct super_block *sb);
static void ext3_write_super (struct super_block * sb);
static void ext3_write_super_lockfs(struct super_block *sb);
/* /*
* Wrappers for journal_start/end. * Wrappers for journal_start/end.
...@@ -178,7 +185,8 @@ void ext3_error (struct super_block * sb, const char * function, ...@@ -178,7 +185,8 @@ void ext3_error (struct super_block * sb, const char * function,
ext3_handle_error(sb); ext3_handle_error(sb);
} }
const char *ext3_decode_error(struct super_block * sb, int errno, char nbuf[16]) static const char *ext3_decode_error(struct super_block * sb, int errno,
char nbuf[16])
{ {
char *errstr = NULL; char *errstr = NULL;
...@@ -261,29 +269,6 @@ void ext3_abort (struct super_block * sb, const char * function, ...@@ -261,29 +269,6 @@ void ext3_abort (struct super_block * sb, const char * function,
journal_abort(EXT3_SB(sb)->s_journal, -EIO); journal_abort(EXT3_SB(sb)->s_journal, -EIO);
} }
/* Deal with the reporting of failure conditions while running, such as
* inconsistencies in operation or invalid system states.
*
* Use ext3_error() for cases of invalid filesystem states, as that will
* record an error on disk and force a filesystem check on the next boot.
*/
NORET_TYPE void ext3_panic (struct super_block * sb, const char * function,
const char * fmt, ...)
{
va_list args;
va_start(args, fmt);
printk(KERN_CRIT "EXT3-fs error (device %s): %s: ",sb->s_id, function);
vprintk(fmt, args);
printk("\n");
va_end(args);
/* this is to prevent panic from syncing this filesystem */
/* AKPM: is this sufficient? */
sb->s_flags |= MS_RDONLY;
panic ("EXT3-fs panic forced\n");
}
void ext3_warning (struct super_block * sb, const char * function, void ext3_warning (struct super_block * sb, const char * function,
const char * fmt, ...) const char * fmt, ...)
{ {
...@@ -386,7 +371,7 @@ static void dump_orphan_list(struct super_block *sb, struct ext3_sb_info *sbi) ...@@ -386,7 +371,7 @@ static void dump_orphan_list(struct super_block *sb, struct ext3_sb_info *sbi)
} }
} }
void ext3_put_super (struct super_block * sb) static void ext3_put_super (struct super_block * sb)
{ {
struct ext3_sb_info *sbi = EXT3_SB(sb); struct ext3_sb_info *sbi = EXT3_SB(sb);
struct ext3_super_block *es = sbi->s_es; struct ext3_super_block *es = sbi->s_es;
...@@ -2018,7 +2003,7 @@ int ext3_force_commit(struct super_block *sb) ...@@ -2018,7 +2003,7 @@ int ext3_force_commit(struct super_block *sb)
* This implicitly triggers the writebehind on sync(). * This implicitly triggers the writebehind on sync().
*/ */
void ext3_write_super (struct super_block * sb) static void ext3_write_super (struct super_block * sb)
{ {
if (down_trylock(&sb->s_lock) == 0) if (down_trylock(&sb->s_lock) == 0)
BUG(); BUG();
...@@ -2041,7 +2026,7 @@ static int ext3_sync_fs(struct super_block *sb, int wait) ...@@ -2041,7 +2026,7 @@ static int ext3_sync_fs(struct super_block *sb, int wait)
* LVM calls this function before a (read-only) snapshot is created. This * LVM calls this function before a (read-only) snapshot is created. This
* gives us a chance to flush the journal completely and mark the fs clean. * gives us a chance to flush the journal completely and mark the fs clean.
*/ */
void ext3_write_super_lockfs(struct super_block *sb) static void ext3_write_super_lockfs(struct super_block *sb)
{ {
sb->s_dirt = 0; sb->s_dirt = 0;
...@@ -2062,7 +2047,7 @@ void ext3_write_super_lockfs(struct super_block *sb) ...@@ -2062,7 +2047,7 @@ void ext3_write_super_lockfs(struct super_block *sb)
* Called by LVM after the snapshot is done. We need to reset the RECOVER * Called by LVM after the snapshot is done. We need to reset the RECOVER
* flag here, even though the filesystem is not technically dirty yet. * flag here, even though the filesystem is not technically dirty yet.
*/ */
void ext3_unlockfs(struct super_block *sb) static void ext3_unlockfs(struct super_block *sb)
{ {
if (!(sb->s_flags & MS_RDONLY)) { if (!(sb->s_flags & MS_RDONLY)) {
lock_super(sb); lock_super(sb);
...@@ -2074,7 +2059,7 @@ void ext3_unlockfs(struct super_block *sb) ...@@ -2074,7 +2059,7 @@ void ext3_unlockfs(struct super_block *sb)
} }
} }
int ext3_remount (struct super_block * sb, int * flags, char * data) static int ext3_remount (struct super_block * sb, int * flags, char * data)
{ {
struct ext3_super_block * es; struct ext3_super_block * es;
struct ext3_sb_info *sbi = EXT3_SB(sb); struct ext3_sb_info *sbi = EXT3_SB(sb);
...@@ -2146,7 +2131,7 @@ int ext3_remount (struct super_block * sb, int * flags, char * data) ...@@ -2146,7 +2131,7 @@ int ext3_remount (struct super_block * sb, int * flags, char * data)
return 0; return 0;
} }
int ext3_statfs (struct super_block * sb, struct kstatfs * buf) static int ext3_statfs (struct super_block * sb, struct kstatfs * buf)
{ {
struct ext3_super_block *es = EXT3_SB(sb)->s_es; struct ext3_super_block *es = EXT3_SB(sb)->s_es;
unsigned long overhead; unsigned long overhead;
......
...@@ -138,23 +138,12 @@ ext3_xattr_handler(int name_index) ...@@ -138,23 +138,12 @@ ext3_xattr_handler(int name_index)
return handler; return handler;
} }
/*
* Inode operation listxattr()
*
* dentry->d_inode->i_sem: don't care
*/
ssize_t
ext3_listxattr(struct dentry *dentry, char *buffer, size_t size)
{
return ext3_xattr_list(dentry->d_inode, buffer, size);
}
/* /*
* ext3_xattr_block_get() * ext3_xattr_block_get()
* *
* routine looks for attribute in EA block and returns it's value and size * routine looks for attribute in EA block and returns it's value and size
*/ */
int static int
ext3_xattr_block_get(struct inode *inode, int name_index, const char *name, ext3_xattr_block_get(struct inode *inode, int name_index, const char *name,
void *buffer, size_t buffer_size) void *buffer, size_t buffer_size)
{ {
...@@ -250,7 +239,7 @@ bad_block: ext3_error(inode->i_sb, "ext3_xattr_get", ...@@ -250,7 +239,7 @@ bad_block: ext3_error(inode->i_sb, "ext3_xattr_get",
* *
* routine looks for attribute in inode body and returns it's value and size * routine looks for attribute in inode body and returns it's value and size
*/ */
int static int
ext3_xattr_ibody_get(struct inode *inode, int name_index, const char *name, ext3_xattr_ibody_get(struct inode *inode, int name_index, const char *name,
void *buffer, size_t buffer_size) void *buffer, size_t buffer_size)
{ {
...@@ -352,7 +341,7 @@ ext3_xattr_get(struct inode *inode, int name_index, const char *name, ...@@ -352,7 +341,7 @@ ext3_xattr_get(struct inode *inode, int name_index, const char *name,
* *
* generate list of attributes stored in EA block * generate list of attributes stored in EA block
*/ */
int static int
ext3_xattr_block_list(struct inode *inode, char *buffer, size_t buffer_size) ext3_xattr_block_list(struct inode *inode, char *buffer, size_t buffer_size)
{ {
struct buffer_head *bh = NULL; struct buffer_head *bh = NULL;
...@@ -428,7 +417,7 @@ bad_block: ext3_error(inode->i_sb, "ext3_xattr_list", ...@@ -428,7 +417,7 @@ bad_block: ext3_error(inode->i_sb, "ext3_xattr_list",
* *
* generate list of attributes stored in inode body * generate list of attributes stored in inode body
*/ */
int static int
ext3_xattr_ibody_list(struct inode *inode, char *buffer, size_t buffer_size) ext3_xattr_ibody_list(struct inode *inode, char *buffer, size_t buffer_size)
{ {
struct ext3_xattr_entry *last; struct ext3_xattr_entry *last;
...@@ -507,7 +496,7 @@ ext3_xattr_ibody_list(struct inode *inode, char *buffer, size_t buffer_size) ...@@ -507,7 +496,7 @@ ext3_xattr_ibody_list(struct inode *inode, char *buffer, size_t buffer_size)
* Returns a negative error number on failure, or the number of bytes * Returns a negative error number on failure, or the number of bytes
* used / required on success. * used / required on success.
*/ */
int static int
ext3_xattr_list(struct inode *inode, char *buffer, size_t buffer_size) ext3_xattr_list(struct inode *inode, char *buffer, size_t buffer_size)
{ {
int size = buffer_size; int size = buffer_size;
...@@ -545,6 +534,17 @@ ext3_xattr_list(struct inode *inode, char *buffer, size_t buffer_size) ...@@ -545,6 +534,17 @@ ext3_xattr_list(struct inode *inode, char *buffer, size_t buffer_size)
return error + size; return error + size;
} }
/*
* Inode operation listxattr()
*
* dentry->d_inode->i_sem: don't care
*/
ssize_t
ext3_listxattr(struct dentry *dentry, char *buffer, size_t size)
{
return ext3_xattr_list(dentry->d_inode, buffer, size);
}
/* /*
* If the EXT3_FEATURE_COMPAT_EXT_ATTR feature of this file system is * If the EXT3_FEATURE_COMPAT_EXT_ATTR feature of this file system is
* not set, set it. * not set, set it.
...@@ -571,7 +571,7 @@ static void ext3_xattr_update_super_block(handle_t *handle, ...@@ -571,7 +571,7 @@ static void ext3_xattr_update_super_block(handle_t *handle,
* search attribute and calculate free space in inode body * search attribute and calculate free space in inode body
* NOTE: free space includes space our attribute hold * NOTE: free space includes space our attribute hold
*/ */
int static int
ext3_xattr_ibody_find(struct inode *inode, int name_index, ext3_xattr_ibody_find(struct inode *inode, int name_index,
const char *name, int *free) const char *name, int *free)
{ {
...@@ -638,7 +638,7 @@ ext3_xattr_ibody_find(struct inode *inode, int name_index, ...@@ -638,7 +638,7 @@ ext3_xattr_ibody_find(struct inode *inode, int name_index,
* search attribute and calculate free space in EA block (if it allocated) * search attribute and calculate free space in EA block (if it allocated)
* NOTE: free space includes space our attribute hold * NOTE: free space includes space our attribute hold
*/ */
int static int
ext3_xattr_block_find(struct inode *inode, int name_index, ext3_xattr_block_find(struct inode *inode, int name_index,
const char *name, int *free) const char *name, int *free)
{ {
...@@ -698,7 +698,7 @@ bad_block: ext3_error(inode->i_sb, "ext3_xattr_get", ...@@ -698,7 +698,7 @@ bad_block: ext3_error(inode->i_sb, "ext3_xattr_get",
* *
* this routine add/remove/replace attribute in inode body * this routine add/remove/replace attribute in inode body
*/ */
int static int
ext3_xattr_ibody_set(handle_t *handle, struct inode *inode, int name_index, ext3_xattr_ibody_set(handle_t *handle, struct inode *inode, int name_index,
const char *name, const void *value, size_t value_len, const char *name, const void *value, size_t value_len,
int flags) int flags)
...@@ -845,113 +845,12 @@ ext3_xattr_ibody_set(handle_t *handle, struct inode *inode, int name_index, ...@@ -845,113 +845,12 @@ ext3_xattr_ibody_set(handle_t *handle, struct inode *inode, int name_index,
return 0; return 0;
} }
/*
* ext3_xattr_set_handle()
*
* Create, replace or remove an extended attribute for this inode. Buffer
* is NULL to remove an existing extended attribute, and non-NULL to
* either replace an existing extended attribute, or create a new extended
* attribute. The flags XATTR_REPLACE and XATTR_CREATE
* specify that an extended attribute must exist and must not exist
* previous to the call, respectively.
*
* Returns 0, or a negative error number on failure.
*/
int
ext3_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index,
const char *name, const void *value, size_t value_len,
int flags)
{
int free1 = -1, free2 = -1;
int err, where = 0, total;
int name_len;
ea_idebug(inode, "name=%d.%s, value=%p, value_len=%ld",
name_index, name, value, (long)value_len);
if (IS_RDONLY(inode))
return -EROFS;
if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
return -EPERM;
if (value == NULL)
value_len = 0;
if (name == NULL)
return -EINVAL;
name_len = strlen(name);
if (name_len > 255 || value_len > inode->i_sb->s_blocksize)
return -ERANGE;
down_write(&EXT3_I(inode)->xattr_sem);
#define EX_FOUND_IN_IBODY 1
#define EX_FOUND_IN_BLOCK 2
/* try to find attribute in inode body */
err = ext3_xattr_ibody_find(inode, name_index, name, &free1);
if (err == 0) {
/* found EA in inode */
where = EX_FOUND_IN_IBODY;
} else if (err == -ENOENT) {
/* there is no such attribute in inode body */
/* try to find attribute in dedicated block */
err = ext3_xattr_block_find(inode, name_index, name, &free2);
if (err != 0 && err != -ENOENT) {
/* not found EA in block */
goto finish;
} else if (err == 0) {
/* found EA in block */
where = EX_FOUND_IN_BLOCK;
}
} else
goto finish;
/* check flags: may replace? may create ? */
if (where && (flags & XATTR_CREATE)) {
err = -EEXIST;
goto finish;
} else if (!where && (flags & XATTR_REPLACE)) {
err = -ENODATA;
goto finish;
}
/* check if we have enough space to store attribute */
total = EXT3_XATTR_LEN(strlen(name)) + value_len;
if (total > free1 && free2 > 0 && total > free2) {
/* have no enough space */
err = -ENOSPC;
goto finish;
}
/* there are two cases when we want to remove EA from original storage:
* a) EA is stored in the inode, but new value doesn't fit
* b) EA is stored in the block, but new value fit in inode
*/
if (where == EX_FOUND_IN_IBODY && total > free1)
ext3_xattr_ibody_set(handle, inode, name_index, name,
NULL, 0, flags);
else if (where == EX_FOUND_IN_BLOCK && total <= free1)
ext3_xattr_block_set(handle, inode, name_index,
name, NULL, 0, flags);
/* try to store EA in inode body */
err = ext3_xattr_ibody_set(handle, inode, name_index, name,
value, value_len, flags);
if (err) {
/* can't store EA in inode body: try to store in block */
err = ext3_xattr_block_set(handle, inode, name_index, name,
value, value_len, flags);
}
finish:
up_write(&EXT3_I(inode)->xattr_sem);
return err;
}
/* /*
* ext3_xattr_block_set() * ext3_xattr_block_set()
* *
* this routine add/remove/replace attribute in EA block * this routine add/remove/replace attribute in EA block
*/ */
int static int
ext3_xattr_block_set(handle_t *handle, struct inode *inode, int name_index, ext3_xattr_block_set(handle_t *handle, struct inode *inode, int name_index,
const char *name, const void *value, size_t value_len, const char *name, const void *value, size_t value_len,
int flags) int flags)
...@@ -1205,6 +1104,107 @@ bad_block: ext3_error(sb, "ext3_xattr_set", ...@@ -1205,6 +1104,107 @@ bad_block: ext3_error(sb, "ext3_xattr_set",
return error; return error;
} }
/*
* ext3_xattr_set_handle()
*
* Create, replace or remove an extended attribute for this inode. Buffer
* is NULL to remove an existing extended attribute, and non-NULL to
* either replace an existing extended attribute, or create a new extended
* attribute. The flags XATTR_REPLACE and XATTR_CREATE
* specify that an extended attribute must exist and must not exist
* previous to the call, respectively.
*
* Returns 0, or a negative error number on failure.
*/
int
ext3_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index,
const char *name, const void *value, size_t value_len,
int flags)
{
int free1 = -1, free2 = -1;
int err, where = 0, total;
int name_len;
ea_idebug(inode, "name=%d.%s, value=%p, value_len=%ld",
name_index, name, value, (long)value_len);
if (IS_RDONLY(inode))
return -EROFS;
if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
return -EPERM;
if (value == NULL)
value_len = 0;
if (name == NULL)
return -EINVAL;
name_len = strlen(name);
if (name_len > 255 || value_len > inode->i_sb->s_blocksize)
return -ERANGE;
down_write(&EXT3_I(inode)->xattr_sem);
#define EX_FOUND_IN_IBODY 1
#define EX_FOUND_IN_BLOCK 2
/* try to find attribute in inode body */
err = ext3_xattr_ibody_find(inode, name_index, name, &free1);
if (err == 0) {
/* found EA in inode */
where = EX_FOUND_IN_IBODY;
} else if (err == -ENOENT) {
/* there is no such attribute in inode body */
/* try to find attribute in dedicated block */
err = ext3_xattr_block_find(inode, name_index, name, &free2);
if (err != 0 && err != -ENOENT) {
/* not found EA in block */
goto finish;
} else if (err == 0) {
/* found EA in block */
where = EX_FOUND_IN_BLOCK;
}
} else
goto finish;
/* check flags: may replace? may create ? */
if (where && (flags & XATTR_CREATE)) {
err = -EEXIST;
goto finish;
} else if (!where && (flags & XATTR_REPLACE)) {
err = -ENODATA;
goto finish;
}
/* check if we have enough space to store attribute */
total = EXT3_XATTR_LEN(strlen(name)) + value_len;
if (total > free1 && free2 > 0 && total > free2) {
/* have no enough space */
err = -ENOSPC;
goto finish;
}
/* there are two cases when we want to remove EA from original storage:
* a) EA is stored in the inode, but new value doesn't fit
* b) EA is stored in the block, but new value fit in inode
*/
if (where == EX_FOUND_IN_IBODY && total > free1)
ext3_xattr_ibody_set(handle, inode, name_index, name,
NULL, 0, flags);
else if (where == EX_FOUND_IN_BLOCK && total <= free1)
ext3_xattr_block_set(handle, inode, name_index,
name, NULL, 0, flags);
/* try to store EA in inode body */
err = ext3_xattr_ibody_set(handle, inode, name_index, name,
value, value_len, flags);
if (err) {
/* can't store EA in inode body: try to store in block */
err = ext3_xattr_block_set(handle, inode, name_index, name,
value, value_len, flags);
}
finish:
up_write(&EXT3_I(inode)->xattr_sem);
return err;
}
/* /*
* Second half of ext3_xattr_set_handle(): Update the file system. * Second half of ext3_xattr_set_handle(): Update the file system.
*/ */
......
...@@ -65,10 +65,8 @@ extern struct xattr_handler ext3_xattr_security_handler; ...@@ -65,10 +65,8 @@ extern struct xattr_handler ext3_xattr_security_handler;
extern ssize_t ext3_listxattr(struct dentry *, char *, size_t); extern ssize_t ext3_listxattr(struct dentry *, char *, size_t);
extern int ext3_xattr_get(struct inode *, int, const char *, void *, size_t); extern int ext3_xattr_get(struct inode *, int, const char *, void *, size_t);
extern int ext3_xattr_list(struct inode *, char *, size_t);
extern int ext3_xattr_set(struct inode *, int, const char *, const void *, size_t, int); extern int ext3_xattr_set(struct inode *, int, const char *, const void *, size_t, int);
extern int ext3_xattr_set_handle(handle_t *, struct inode *, int, const char *,const void *,size_t,int); extern int ext3_xattr_set_handle(handle_t *, struct inode *, int, const char *,const void *,size_t,int);
extern int ext3_xattr_block_set(handle_t *, struct inode *, int, const char *,const void *,size_t,int);
extern void ext3_xattr_delete_inode(handle_t *, struct inode *); extern void ext3_xattr_delete_inode(handle_t *, struct inode *);
extern void ext3_xattr_put_super(struct super_block *); extern void ext3_xattr_put_super(struct super_block *);
...@@ -87,12 +85,6 @@ ext3_xattr_get(struct inode *inode, int name_index, const char *name, ...@@ -87,12 +85,6 @@ ext3_xattr_get(struct inode *inode, int name_index, const char *name,
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
static inline int
ext3_xattr_list(struct inode *inode, void *buffer, size_t size)
{
return -EOPNOTSUPP;
}
static inline int static inline int
ext3_xattr_set(struct inode *inode, int name_index, const char *name, ext3_xattr_set(struct inode *inode, int name_index, const char *name,
const void *value, size_t size, int flags) const void *value, size_t size, int flags)
......
...@@ -793,25 +793,15 @@ extern void ext3_error (struct super_block *, const char *, const char *, ...) ...@@ -793,25 +793,15 @@ extern void ext3_error (struct super_block *, const char *, const char *, ...)
extern void __ext3_std_error (struct super_block *, const char *, int); extern void __ext3_std_error (struct super_block *, const char *, int);
extern void ext3_abort (struct super_block *, const char *, const char *, ...) extern void ext3_abort (struct super_block *, const char *, const char *, ...)
__attribute__ ((format (printf, 3, 4))); __attribute__ ((format (printf, 3, 4)));
extern NORET_TYPE void ext3_panic (struct super_block *, const char *,
const char *, ...)
__attribute__ ((NORET_AND format (printf, 3, 4)));
extern void ext3_warning (struct super_block *, const char *, const char *, ...) extern void ext3_warning (struct super_block *, const char *, const char *, ...)
__attribute__ ((format (printf, 3, 4))); __attribute__ ((format (printf, 3, 4)));
extern void ext3_update_dynamic_rev (struct super_block *sb); extern void ext3_update_dynamic_rev (struct super_block *sb);
extern void ext3_put_super (struct super_block *);
extern void ext3_write_super (struct super_block *);
extern void ext3_write_super_lockfs (struct super_block *);
extern void ext3_unlockfs (struct super_block *);
extern int ext3_remount (struct super_block *, int *, char *);
extern int ext3_statfs (struct super_block *, struct kstatfs *);
#define ext3_std_error(sb, errno) \ #define ext3_std_error(sb, errno) \
do { \ do { \
if ((errno)) \ if ((errno)) \
__ext3_std_error((sb), __FUNCTION__, (errno)); \ __ext3_std_error((sb), __FUNCTION__, (errno)); \
} while (0) } while (0)
extern const char *ext3_decode_error(struct super_block *sb, int errno, char nbuf[16]);
/* /*
* Inodes and files operations * Inodes and files operations
......
...@@ -46,8 +46,6 @@ ...@@ -46,8 +46,6 @@
EXT3_XATTR_TRANS_BLOCKS - 2 + \ EXT3_XATTR_TRANS_BLOCKS - 2 + \
2*EXT3_QUOTA_TRANS_BLOCKS) 2*EXT3_QUOTA_TRANS_BLOCKS)
extern int ext3_writepage_trans_blocks(struct inode *inode);
/* Delete operations potentially hit one directory's namespace plus an /* Delete operations potentially hit one directory's namespace plus an
* entire inode, plus arbitrary amounts of bitmap/indirection data. Be * entire inode, plus arbitrary amounts of bitmap/indirection data. Be
* generous. We can grow the delete transaction later if necessary. */ * generous. We can grow the delete transaction later if necessary. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment