Commit 2d94dfc8 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6:
  mount options: fix jfs
  JFS: simplify types to get rid of sparse warning
  JFS: FIx one more plain integer as NULL pointer warning
  JFS: Remove defconfig ptr comparison to 0
  JFS: use DIV_ROUND_UP where appropriate
  Remove unnecessary kmalloc casts in the jfs filesystem
  JFS is missing a memory barrier
  JFS: Make sure special inode data is written after journal is flushed
  JFS: clear PAGECACHE_TAG_DIRTY for no-write pages
parents b47711bf 5c5e32ce
...@@ -284,11 +284,11 @@ static struct dir_table_slot *find_index(struct inode *ip, u32 index, ...@@ -284,11 +284,11 @@ static struct dir_table_slot *find_index(struct inode *ip, u32 index,
release_metapage(*mp); release_metapage(*mp);
*mp = NULL; *mp = NULL;
} }
if (*mp == 0) { if (!(*mp)) {
*lblock = blkno; *lblock = blkno;
*mp = read_index_page(ip, blkno); *mp = read_index_page(ip, blkno);
} }
if (*mp == 0) { if (!(*mp)) {
jfs_err("free_index: error reading directory table"); jfs_err("free_index: error reading directory table");
return NULL; return NULL;
} }
...@@ -413,7 +413,8 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot) ...@@ -413,7 +413,8 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot)
} }
ip->i_size = PSIZE; ip->i_size = PSIZE;
if ((mp = get_index_page(ip, 0)) == 0) { mp = get_index_page(ip, 0);
if (!mp) {
jfs_err("add_index: get_metapage failed!"); jfs_err("add_index: get_metapage failed!");
xtTruncate(tid, ip, 0, COMMIT_PWMAP); xtTruncate(tid, ip, 0, COMMIT_PWMAP);
memcpy(&jfs_ip->i_dirtable, temp_table, memcpy(&jfs_ip->i_dirtable, temp_table,
...@@ -461,7 +462,7 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot) ...@@ -461,7 +462,7 @@ static u32 add_index(tid_t tid, struct inode *ip, s64 bn, int slot)
} else } else
mp = read_index_page(ip, blkno); mp = read_index_page(ip, blkno);
if (mp == 0) { if (!mp) {
jfs_err("add_index: get/read_metapage failed!"); jfs_err("add_index: get/read_metapage failed!");
goto clean_up; goto clean_up;
} }
...@@ -499,7 +500,7 @@ static void free_index(tid_t tid, struct inode *ip, u32 index, u32 next) ...@@ -499,7 +500,7 @@ static void free_index(tid_t tid, struct inode *ip, u32 index, u32 next)
dirtab_slot = find_index(ip, index, &mp, &lblock); dirtab_slot = find_index(ip, index, &mp, &lblock);
if (dirtab_slot == 0) if (!dirtab_slot)
return; return;
dirtab_slot->flag = DIR_INDEX_FREE; dirtab_slot->flag = DIR_INDEX_FREE;
...@@ -526,7 +527,7 @@ static void modify_index(tid_t tid, struct inode *ip, u32 index, s64 bn, ...@@ -526,7 +527,7 @@ static void modify_index(tid_t tid, struct inode *ip, u32 index, s64 bn,
dirtab_slot = find_index(ip, index, mp, lblock); dirtab_slot = find_index(ip, index, mp, lblock);
if (dirtab_slot == 0) if (!dirtab_slot)
return; return;
DTSaddress(dirtab_slot, bn); DTSaddress(dirtab_slot, bn);
...@@ -552,7 +553,7 @@ static int read_index(struct inode *ip, u32 index, ...@@ -552,7 +553,7 @@ static int read_index(struct inode *ip, u32 index,
struct dir_table_slot *slot; struct dir_table_slot *slot;
slot = find_index(ip, index, &mp, &lblock); slot = find_index(ip, index, &mp, &lblock);
if (slot == 0) { if (!slot) {
return -EIO; return -EIO;
} }
...@@ -592,10 +593,8 @@ int dtSearch(struct inode *ip, struct component_name * key, ino_t * data, ...@@ -592,10 +593,8 @@ int dtSearch(struct inode *ip, struct component_name * key, ino_t * data,
struct component_name ciKey; struct component_name ciKey;
struct super_block *sb = ip->i_sb; struct super_block *sb = ip->i_sb;
ciKey.name = ciKey.name = kmalloc((JFS_NAME_MAX + 1) * sizeof(wchar_t), GFP_NOFS);
(wchar_t *) kmalloc((JFS_NAME_MAX + 1) * sizeof(wchar_t), if (!ciKey.name) {
GFP_NOFS);
if (ciKey.name == 0) {
rc = -ENOMEM; rc = -ENOMEM;
goto dtSearch_Exit2; goto dtSearch_Exit2;
} }
...@@ -957,10 +956,8 @@ static int dtSplitUp(tid_t tid, ...@@ -957,10 +956,8 @@ static int dtSplitUp(tid_t tid,
smp = split->mp; smp = split->mp;
sp = DT_PAGE(ip, smp); sp = DT_PAGE(ip, smp);
key.name = key.name = kmalloc((JFS_NAME_MAX + 2) * sizeof(wchar_t), GFP_NOFS);
(wchar_t *) kmalloc((JFS_NAME_MAX + 2) * sizeof(wchar_t), if (!key.name) {
GFP_NOFS);
if (key.name == 0) {
DT_PUTPAGE(smp); DT_PUTPAGE(smp);
rc = -ENOMEM; rc = -ENOMEM;
goto dtSplitUp_Exit; goto dtSplitUp_Exit;
......
...@@ -74,7 +74,7 @@ struct idtentry { ...@@ -74,7 +74,7 @@ struct idtentry {
#define DTIHDRDATALEN 11 #define DTIHDRDATALEN 11
/* compute number of slots for entry */ /* compute number of slots for entry */
#define NDTINTERNAL(klen) ( ((4 + (klen)) + (15 - 1)) / 15 ) #define NDTINTERNAL(klen) (DIV_ROUND_UP((4 + (klen)), 15))
/* /*
...@@ -133,7 +133,7 @@ struct dir_table_slot { ...@@ -133,7 +133,7 @@ struct dir_table_slot {
( ((s64)((dts)->addr1)) << 32 | __le32_to_cpu((dts)->addr2) ) ( ((s64)((dts)->addr1)) << 32 | __le32_to_cpu((dts)->addr2) )
/* compute number of slots for entry */ /* compute number of slots for entry */
#define NDTLEAF_LEGACY(klen) ( ((2 + (klen)) + (15 - 1)) / 15 ) #define NDTLEAF_LEGACY(klen) (DIV_ROUND_UP((2 + (klen)), 15))
#define NDTLEAF NDTINTERNAL #define NDTLEAF NDTINTERNAL
......
...@@ -381,7 +381,7 @@ int diRead(struct inode *ip) ...@@ -381,7 +381,7 @@ int diRead(struct inode *ip)
/* read the page of disk inode */ /* read the page of disk inode */
mp = read_metapage(ipimap, pageno << sbi->l2nbperpage, PSIZE, 1); mp = read_metapage(ipimap, pageno << sbi->l2nbperpage, PSIZE, 1);
if (mp == 0) { if (!mp) {
jfs_err("diRead: read_metapage failed"); jfs_err("diRead: read_metapage failed");
return -EIO; return -EIO;
} }
...@@ -654,7 +654,7 @@ int diWrite(tid_t tid, struct inode *ip) ...@@ -654,7 +654,7 @@ int diWrite(tid_t tid, struct inode *ip)
/* read the page of disk inode */ /* read the page of disk inode */
retry: retry:
mp = read_metapage(ipimap, pageno << sbi->l2nbperpage, PSIZE, 1); mp = read_metapage(ipimap, pageno << sbi->l2nbperpage, PSIZE, 1);
if (mp == 0) if (!mp)
return -EIO; return -EIO;
/* get the pointer to the disk inode */ /* get the pointer to the disk inode */
......
...@@ -208,6 +208,17 @@ static struct lmStat { ...@@ -208,6 +208,17 @@ static struct lmStat {
} lmStat; } lmStat;
#endif #endif
static void write_special_inodes(struct jfs_log *log,
int (*writer)(struct address_space *))
{
struct jfs_sb_info *sbi;
list_for_each_entry(sbi, &log->sb_list, log_list) {
writer(sbi->ipbmap->i_mapping);
writer(sbi->ipimap->i_mapping);
writer(sbi->direct_inode->i_mapping);
}
}
/* /*
* NAME: lmLog() * NAME: lmLog()
...@@ -935,22 +946,13 @@ static int lmLogSync(struct jfs_log * log, int hard_sync) ...@@ -935,22 +946,13 @@ static int lmLogSync(struct jfs_log * log, int hard_sync)
struct lrd lrd; struct lrd lrd;
int lsn; int lsn;
struct logsyncblk *lp; struct logsyncblk *lp;
struct jfs_sb_info *sbi;
unsigned long flags; unsigned long flags;
/* push dirty metapages out to disk */ /* push dirty metapages out to disk */
if (hard_sync) if (hard_sync)
list_for_each_entry(sbi, &log->sb_list, log_list) { write_special_inodes(log, filemap_fdatawrite);
filemap_fdatawrite(sbi->ipbmap->i_mapping);
filemap_fdatawrite(sbi->ipimap->i_mapping);
filemap_fdatawrite(sbi->direct_inode->i_mapping);
}
else else
list_for_each_entry(sbi, &log->sb_list, log_list) { write_special_inodes(log, filemap_flush);
filemap_flush(sbi->ipbmap->i_mapping);
filemap_flush(sbi->ipimap->i_mapping);
filemap_flush(sbi->direct_inode->i_mapping);
}
/* /*
* forward syncpt * forward syncpt
...@@ -1536,7 +1538,6 @@ void jfs_flush_journal(struct jfs_log *log, int wait) ...@@ -1536,7 +1538,6 @@ void jfs_flush_journal(struct jfs_log *log, int wait)
{ {
int i; int i;
struct tblock *target = NULL; struct tblock *target = NULL;
struct jfs_sb_info *sbi;
/* jfs_write_inode may call us during read-only mount */ /* jfs_write_inode may call us during read-only mount */
if (!log) if (!log)
...@@ -1598,11 +1599,7 @@ void jfs_flush_journal(struct jfs_log *log, int wait) ...@@ -1598,11 +1599,7 @@ void jfs_flush_journal(struct jfs_log *log, int wait)
if (wait < 2) if (wait < 2)
return; return;
list_for_each_entry(sbi, &log->sb_list, log_list) { write_special_inodes(log, filemap_fdatawrite);
filemap_fdatawrite(sbi->ipbmap->i_mapping);
filemap_fdatawrite(sbi->ipimap->i_mapping);
filemap_fdatawrite(sbi->direct_inode->i_mapping);
}
/* /*
* If there was recent activity, we may need to wait * If there was recent activity, we may need to wait
...@@ -1611,6 +1608,7 @@ void jfs_flush_journal(struct jfs_log *log, int wait) ...@@ -1611,6 +1608,7 @@ void jfs_flush_journal(struct jfs_log *log, int wait)
if ((!list_empty(&log->cqueue)) || !list_empty(&log->synclist)) { if ((!list_empty(&log->cqueue)) || !list_empty(&log->synclist)) {
for (i = 0; i < 200; i++) { /* Too much? */ for (i = 0; i < 200; i++) { /* Too much? */
msleep(250); msleep(250);
write_special_inodes(log, filemap_fdatawrite);
if (list_empty(&log->cqueue) && if (list_empty(&log->cqueue) &&
list_empty(&log->synclist)) list_empty(&log->synclist))
break; break;
...@@ -2347,7 +2345,7 @@ int jfsIOWait(void *arg) ...@@ -2347,7 +2345,7 @@ int jfsIOWait(void *arg)
do { do {
spin_lock_irq(&log_redrive_lock); spin_lock_irq(&log_redrive_lock);
while ((bp = log_redrive_list) != 0) { while ((bp = log_redrive_list)) {
log_redrive_list = bp->l_redrive_next; log_redrive_list = bp->l_redrive_next;
bp->l_redrive_next = NULL; bp->l_redrive_next = NULL;
spin_unlock_irq(&log_redrive_lock); spin_unlock_irq(&log_redrive_lock);
......
...@@ -39,11 +39,11 @@ static struct { ...@@ -39,11 +39,11 @@ static struct {
#endif #endif
#define metapage_locked(mp) test_bit(META_locked, &(mp)->flag) #define metapage_locked(mp) test_bit(META_locked, &(mp)->flag)
#define trylock_metapage(mp) test_and_set_bit(META_locked, &(mp)->flag) #define trylock_metapage(mp) test_and_set_bit_lock(META_locked, &(mp)->flag)
static inline void unlock_metapage(struct metapage *mp) static inline void unlock_metapage(struct metapage *mp)
{ {
clear_bit(META_locked, &mp->flag); clear_bit_unlock(META_locked, &mp->flag);
wake_up(&mp->wait); wake_up(&mp->wait);
} }
...@@ -88,7 +88,7 @@ struct meta_anchor { ...@@ -88,7 +88,7 @@ struct meta_anchor {
}; };
#define mp_anchor(page) ((struct meta_anchor *)page_private(page)) #define mp_anchor(page) ((struct meta_anchor *)page_private(page))
static inline struct metapage *page_to_mp(struct page *page, uint offset) static inline struct metapage *page_to_mp(struct page *page, int offset)
{ {
if (!PagePrivate(page)) if (!PagePrivate(page))
return NULL; return NULL;
...@@ -153,7 +153,7 @@ static inline void dec_io(struct page *page, void (*handler) (struct page *)) ...@@ -153,7 +153,7 @@ static inline void dec_io(struct page *page, void (*handler) (struct page *))
} }
#else #else
static inline struct metapage *page_to_mp(struct page *page, uint offset) static inline struct metapage *page_to_mp(struct page *page, int offset)
{ {
return PagePrivate(page) ? (struct metapage *)page_private(page) : NULL; return PagePrivate(page) ? (struct metapage *)page_private(page) : NULL;
} }
...@@ -249,7 +249,7 @@ static inline void drop_metapage(struct page *page, struct metapage *mp) ...@@ -249,7 +249,7 @@ static inline void drop_metapage(struct page *page, struct metapage *mp)
*/ */
static sector_t metapage_get_blocks(struct inode *inode, sector_t lblock, static sector_t metapage_get_blocks(struct inode *inode, sector_t lblock,
unsigned int *len) int *len)
{ {
int rc = 0; int rc = 0;
int xflag; int xflag;
...@@ -352,25 +352,27 @@ static void metapage_write_end_io(struct bio *bio, int err) ...@@ -352,25 +352,27 @@ static void metapage_write_end_io(struct bio *bio, int err)
static int metapage_writepage(struct page *page, struct writeback_control *wbc) static int metapage_writepage(struct page *page, struct writeback_control *wbc)
{ {
struct bio *bio = NULL; struct bio *bio = NULL;
unsigned int block_offset; /* block offset of mp within page */ int block_offset; /* block offset of mp within page */
struct inode *inode = page->mapping->host; struct inode *inode = page->mapping->host;
unsigned int blocks_per_mp = JFS_SBI(inode->i_sb)->nbperpage; int blocks_per_mp = JFS_SBI(inode->i_sb)->nbperpage;
unsigned int len; int len;
unsigned int xlen; int xlen;
struct metapage *mp; struct metapage *mp;
int redirty = 0; int redirty = 0;
sector_t lblock; sector_t lblock;
int nr_underway = 0;
sector_t pblock; sector_t pblock;
sector_t next_block = 0; sector_t next_block = 0;
sector_t page_start; sector_t page_start;
unsigned long bio_bytes = 0; unsigned long bio_bytes = 0;
unsigned long bio_offset = 0; unsigned long bio_offset = 0;
unsigned int offset; int offset;
page_start = (sector_t)page->index << page_start = (sector_t)page->index <<
(PAGE_CACHE_SHIFT - inode->i_blkbits); (PAGE_CACHE_SHIFT - inode->i_blkbits);
BUG_ON(!PageLocked(page)); BUG_ON(!PageLocked(page));
BUG_ON(PageWriteback(page)); BUG_ON(PageWriteback(page));
set_page_writeback(page);
for (offset = 0; offset < PAGE_CACHE_SIZE; offset += PSIZE) { for (offset = 0; offset < PAGE_CACHE_SIZE; offset += PSIZE) {
mp = page_to_mp(page, offset); mp = page_to_mp(page, offset);
...@@ -413,11 +415,10 @@ static int metapage_writepage(struct page *page, struct writeback_control *wbc) ...@@ -413,11 +415,10 @@ static int metapage_writepage(struct page *page, struct writeback_control *wbc)
if (!bio->bi_size) if (!bio->bi_size)
goto dump_bio; goto dump_bio;
submit_bio(WRITE, bio); submit_bio(WRITE, bio);
nr_underway++;
bio = NULL; bio = NULL;
} else { } else
set_page_writeback(page);
inc_io(page); inc_io(page);
}
xlen = (PAGE_CACHE_SIZE - offset) >> inode->i_blkbits; xlen = (PAGE_CACHE_SIZE - offset) >> inode->i_blkbits;
pblock = metapage_get_blocks(inode, lblock, &xlen); pblock = metapage_get_blocks(inode, lblock, &xlen);
if (!pblock) { if (!pblock) {
...@@ -427,7 +428,7 @@ static int metapage_writepage(struct page *page, struct writeback_control *wbc) ...@@ -427,7 +428,7 @@ static int metapage_writepage(struct page *page, struct writeback_control *wbc)
continue; continue;
} }
set_bit(META_io, &mp->flag); set_bit(META_io, &mp->flag);
len = min(xlen, (uint) JFS_SBI(inode->i_sb)->nbperpage); len = min(xlen, (int)JFS_SBI(inode->i_sb)->nbperpage);
bio = bio_alloc(GFP_NOFS, 1); bio = bio_alloc(GFP_NOFS, 1);
bio->bi_bdev = inode->i_sb->s_bdev; bio->bi_bdev = inode->i_sb->s_bdev;
...@@ -449,12 +450,16 @@ static int metapage_writepage(struct page *page, struct writeback_control *wbc) ...@@ -449,12 +450,16 @@ static int metapage_writepage(struct page *page, struct writeback_control *wbc)
goto dump_bio; goto dump_bio;
submit_bio(WRITE, bio); submit_bio(WRITE, bio);
nr_underway++;
} }
if (redirty) if (redirty)
redirty_page_for_writepage(wbc, page); redirty_page_for_writepage(wbc, page);
unlock_page(page); unlock_page(page);
if (nr_underway == 0)
end_page_writeback(page);
return 0; return 0;
add_failed: add_failed:
/* We should never reach here, since we're only adding one vec */ /* We should never reach here, since we're only adding one vec */
...@@ -475,13 +480,13 @@ static int metapage_readpage(struct file *fp, struct page *page) ...@@ -475,13 +480,13 @@ static int metapage_readpage(struct file *fp, struct page *page)
{ {
struct inode *inode = page->mapping->host; struct inode *inode = page->mapping->host;
struct bio *bio = NULL; struct bio *bio = NULL;
unsigned int block_offset; int block_offset;
unsigned int blocks_per_page = PAGE_CACHE_SIZE >> inode->i_blkbits; int blocks_per_page = PAGE_CACHE_SIZE >> inode->i_blkbits;
sector_t page_start; /* address of page in fs blocks */ sector_t page_start; /* address of page in fs blocks */
sector_t pblock; sector_t pblock;
unsigned int xlen; int xlen;
unsigned int len; unsigned int len;
unsigned int offset; int offset;
BUG_ON(!PageLocked(page)); BUG_ON(!PageLocked(page));
page_start = (sector_t)page->index << page_start = (sector_t)page->index <<
...@@ -530,7 +535,7 @@ static int metapage_releasepage(struct page *page, gfp_t gfp_mask) ...@@ -530,7 +535,7 @@ static int metapage_releasepage(struct page *page, gfp_t gfp_mask)
{ {
struct metapage *mp; struct metapage *mp;
int ret = 1; int ret = 1;
unsigned int offset; int offset;
for (offset = 0; offset < PAGE_CACHE_SIZE; offset += PSIZE) { for (offset = 0; offset < PAGE_CACHE_SIZE; offset += PSIZE) {
mp = page_to_mp(page, offset); mp = page_to_mp(page, offset);
......
...@@ -147,7 +147,7 @@ int jfs_mount(struct super_block *sb) ...@@ -147,7 +147,7 @@ int jfs_mount(struct super_block *sb)
*/ */
if ((sbi->mntflag & JFS_BAD_SAIT) == 0) { if ((sbi->mntflag & JFS_BAD_SAIT) == 0) {
ipaimap2 = diReadSpecial(sb, AGGREGATE_I, 1); ipaimap2 = diReadSpecial(sb, AGGREGATE_I, 1);
if (ipaimap2 == 0) { if (!ipaimap2) {
jfs_err("jfs_mount: Faild to read AGGREGATE_I"); jfs_err("jfs_mount: Faild to read AGGREGATE_I");
rc = -EIO; rc = -EIO;
goto errout35; goto errout35;
......
...@@ -68,7 +68,7 @@ int jfs_umount(struct super_block *sb) ...@@ -68,7 +68,7 @@ int jfs_umount(struct super_block *sb)
/* /*
* Wait for outstanding transactions to be written to log: * Wait for outstanding transactions to be written to log:
*/ */
jfs_flush_journal(log, 2); jfs_flush_journal(log, 1);
/* /*
* close fileset inode allocation map (aka fileset inode) * close fileset inode allocation map (aka fileset inode)
...@@ -146,7 +146,7 @@ int jfs_umount_rw(struct super_block *sb) ...@@ -146,7 +146,7 @@ int jfs_umount_rw(struct super_block *sb)
* *
* remove file system from log active file system list. * remove file system from log active file system list.
*/ */
jfs_flush_journal(log, 2); jfs_flush_journal(log, 1);
/* /*
* Make sure all metadata makes it to disk * Make sure all metadata makes it to disk
......
...@@ -1103,8 +1103,8 @@ static int jfs_rename(struct inode *old_dir, struct dentry *old_dentry, ...@@ -1103,8 +1103,8 @@ static int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
* Make sure dest inode number (if any) is what we think it is * Make sure dest inode number (if any) is what we think it is
*/ */
rc = dtSearch(new_dir, &new_dname, &ino, &btstack, JFS_LOOKUP); rc = dtSearch(new_dir, &new_dname, &ino, &btstack, JFS_LOOKUP);
if (rc == 0) { if (!rc) {
if ((new_ip == 0) || (ino != new_ip->i_ino)) { if ((!new_ip) || (ino != new_ip->i_ino)) {
rc = -ESTALE; rc = -ESTALE;
goto out3; goto out3;
} }
......
...@@ -172,7 +172,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize) ...@@ -172,7 +172,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
*/ */
t64 = ((newLVSize - newLogSize + BPERDMAP - 1) >> L2BPERDMAP) t64 = ((newLVSize - newLogSize + BPERDMAP - 1) >> L2BPERDMAP)
<< L2BPERDMAP; << L2BPERDMAP;
t32 = ((t64 + (BITSPERPAGE - 1)) / BITSPERPAGE) + 1 + 50; t32 = DIV_ROUND_UP(t64, BITSPERPAGE) + 1 + 50;
newFSCKSize = t32 << sbi->l2nbperpage; newFSCKSize = t32 << sbi->l2nbperpage;
newFSCKAddress = newLogAddress - newFSCKSize; newFSCKAddress = newLogAddress - newFSCKSize;
......
...@@ -598,6 +598,12 @@ static int jfs_show_options(struct seq_file *seq, struct vfsmount *vfs) ...@@ -598,6 +598,12 @@ static int jfs_show_options(struct seq_file *seq, struct vfsmount *vfs)
seq_printf(seq, ",umask=%03o", sbi->umask); seq_printf(seq, ",umask=%03o", sbi->umask);
if (sbi->flag & JFS_NOINTEGRITY) if (sbi->flag & JFS_NOINTEGRITY)
seq_puts(seq, ",nointegrity"); seq_puts(seq, ",nointegrity");
if (sbi->nls_tab)
seq_printf(seq, ",iocharset=%s", sbi->nls_tab->charset);
if (sbi->flag & JFS_ERR_CONTINUE)
seq_printf(seq, ",errors=continue");
if (sbi->flag & JFS_ERR_PANIC)
seq_printf(seq, ",errors=panic");
#ifdef CONFIG_QUOTA #ifdef CONFIG_QUOTA
if (sbi->flag & JFS_USRQUOTA) if (sbi->flag & JFS_USRQUOTA)
......
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