Commit abf5d15f authored by Evgeniy Dushistov's avatar Evgeniy Dushistov Committed by Linus Torvalds

[PATCH] ufs: easy debug

Currently to turn on debug mode "user" has to edit ~10 files, to turn off he
has to do it again.

This patch introduce such changes:
1)turn on(off) debug messages via ".config"
2)remove unnecessary duplication of code
3)make "UFSD" macros more similar to function
4)fix some compiler warnings
Signed-off-by: default avatarEvgeniy Dushistov <dushistov@mail.ru>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 5afb3145
......@@ -1375,6 +1375,14 @@ config UFS_FS_WRITE
Say Y here if you want to try writing to UFS partitions. This is
experimental, so you should back up your UFS partitions beforehand.
config UFS_DEBUG
bool "UFS debugging"
depends on UFS_FS
help
If you are experiencing any problems with the UFS filesystem, say
Y here. This will result in _many_ additional debugging messages to be
written to the system log.
endmenu
menu "Network File Systems"
......
......@@ -21,14 +21,6 @@
#include "swab.h"
#include "util.h"
#undef UFS_BALLOC_DEBUG
#ifdef UFS_BALLOC_DEBUG
#define UFSD(x) printk("(%s, %d), %s:", __FILE__, __LINE__, __FUNCTION__); printk x;
#else
#define UFSD(x)
#endif
static unsigned ufs_add_fragments (struct inode *, unsigned, unsigned, unsigned, int *);
static unsigned ufs_alloc_fragments (struct inode *, unsigned, unsigned, unsigned, int *);
static unsigned ufs_alloccg_block (struct inode *, struct ufs_cg_private_info *, unsigned, int *);
......@@ -52,7 +44,7 @@ void ufs_free_fragments(struct inode *inode, unsigned fragment, unsigned count)
uspi = UFS_SB(sb)->s_uspi;
usb1 = ubh_get_usb_first(uspi);
UFSD(("ENTER, fragment %u, count %u\n", fragment, count))
UFSD("ENTER, fragment %u, count %u\n", fragment, count);
if (ufs_fragnum(fragment) + count > uspi->s_fpg)
ufs_error (sb, "ufs_free_fragments", "internal error");
......@@ -123,12 +115,12 @@ void ufs_free_fragments(struct inode *inode, unsigned fragment, unsigned count)
sb->s_dirt = 1;
unlock_super (sb);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return;
failed:
unlock_super (sb);
UFSD(("EXIT (FAILED)\n"))
UFSD("EXIT (FAILED)\n");
return;
}
......@@ -148,7 +140,7 @@ void ufs_free_blocks(struct inode *inode, unsigned fragment, unsigned count)
uspi = UFS_SB(sb)->s_uspi;
usb1 = ubh_get_usb_first(uspi);
UFSD(("ENTER, fragment %u, count %u\n", fragment, count))
UFSD("ENTER, fragment %u, count %u\n", fragment, count);
if ((fragment & uspi->s_fpbmask) || (count & uspi->s_fpbmask)) {
ufs_error (sb, "ufs_free_blocks", "internal error, "
......@@ -215,12 +207,12 @@ do_more:
sb->s_dirt = 1;
unlock_super (sb);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return;
failed:
unlock_super (sb);
UFSD(("EXIT (FAILED)\n"))
UFSD("EXIT (FAILED)\n");
return;
}
......@@ -290,8 +282,8 @@ static void ufs_change_blocknr(struct inode *inode, unsigned int count,
baseblk = ((i_size_read(inode) - 1) >> inode->i_blkbits) + 1 - count;
UFSD(("ENTER, ino %lu, count %u, oldb %u, newb %u\n",
inode->i_ino, count, oldb, newb));
UFSD("ENTER, ino %lu, count %u, oldb %u, newb %u\n",
inode->i_ino, count, oldb, newb);
BUG_ON(!PageLocked(locked_page));
......@@ -326,7 +318,7 @@ static void ufs_change_blocknr(struct inode *inode, unsigned int count,
page_cache_release(page);
}
}
UFSD(("EXIT\n"));
UFSD("EXIT\n");
}
unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
......@@ -337,7 +329,7 @@ unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
struct ufs_super_block_first * usb1;
unsigned cgno, oldcount, newcount, tmp, request, result;
UFSD(("ENTER, ino %lu, fragment %u, goal %u, count %u\n", inode->i_ino, fragment, goal, count))
UFSD("ENTER, ino %lu, fragment %u, goal %u, count %u\n", inode->i_ino, fragment, goal, count);
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -366,14 +358,14 @@ unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
return (unsigned)-1;
}
if (fragment < UFS_I(inode)->i_lastfrag) {
UFSD(("EXIT (ALREADY ALLOCATED)\n"))
UFSD("EXIT (ALREADY ALLOCATED)\n");
unlock_super (sb);
return 0;
}
}
else {
if (tmp) {
UFSD(("EXIT (ALREADY ALLOCATED)\n"))
UFSD("EXIT (ALREADY ALLOCATED)\n");
unlock_super(sb);
return 0;
}
......@@ -384,7 +376,7 @@ unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
*/
if (!capable(CAP_SYS_RESOURCE) && ufs_freespace(usb1, UFS_MINFREE) <= 0) {
unlock_super (sb);
UFSD(("EXIT (FAILED)\n"))
UFSD("EXIT (FAILED)\n");
return 0;
}
......@@ -407,7 +399,7 @@ unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count);
}
unlock_super(sb);
UFSD(("EXIT, result %u\n", result))
UFSD("EXIT, result %u\n", result);
return result;
}
......@@ -420,7 +412,7 @@ unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
inode->i_blocks += count << uspi->s_nspfshift;
UFS_I(inode)->i_lastfrag = max_t(u32, UFS_I(inode)->i_lastfrag, fragment + count);
unlock_super(sb);
UFSD(("EXIT, result %u\n", result))
UFSD("EXIT, result %u\n", result);
return result;
}
......@@ -458,12 +450,12 @@ unsigned ufs_new_fragments(struct inode * inode, __fs32 * p, unsigned fragment,
if (newcount < request)
ufs_free_fragments (inode, result + newcount, request - newcount);
ufs_free_fragments (inode, tmp, oldcount);
UFSD(("EXIT, result %u\n", result))
UFSD("EXIT, result %u\n", result);
return result;
}
unlock_super(sb);
UFSD(("EXIT (FAILED)\n"))
UFSD("EXIT (FAILED)\n");
return 0;
}
......@@ -478,7 +470,7 @@ ufs_add_fragments (struct inode * inode, unsigned fragment,
struct ufs_cylinder_group * ucg;
unsigned cgno, fragno, fragoff, count, fragsize, i;
UFSD(("ENTER, fragment %u, oldcount %u, newcount %u\n", fragment, oldcount, newcount))
UFSD("ENTER, fragment %u, oldcount %u, newcount %u\n", fragment, oldcount, newcount);
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -538,7 +530,7 @@ ufs_add_fragments (struct inode * inode, unsigned fragment,
}
sb->s_dirt = 1;
UFSD(("EXIT, fragment %u\n", fragment))
UFSD("EXIT, fragment %u\n", fragment);
return fragment;
}
......@@ -561,7 +553,7 @@ static unsigned ufs_alloc_fragments (struct inode * inode, unsigned cgno,
struct ufs_cylinder_group * ucg;
unsigned oldcg, i, j, k, result, allocsize;
UFSD(("ENTER, ino %lu, cgno %u, goal %u, count %u\n", inode->i_ino, cgno, goal, count))
UFSD("ENTER, ino %lu, cgno %u, goal %u, count %u\n", inode->i_ino, cgno, goal, count);
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -595,7 +587,7 @@ static unsigned ufs_alloc_fragments (struct inode * inode, unsigned cgno,
UFS_TEST_FREE_SPACE_CG
}
UFSD(("EXIT (FAILED)\n"))
UFSD("EXIT (FAILED)\n");
return 0;
cg_found:
......@@ -664,7 +656,7 @@ succed:
sb->s_dirt = 1;
result += cgno * uspi->s_fpg;
UFSD(("EXIT3, result %u\n", result))
UFSD("EXIT3, result %u\n", result);
return result;
}
......@@ -677,7 +669,7 @@ static unsigned ufs_alloccg_block (struct inode * inode,
struct ufs_cylinder_group * ucg;
unsigned result, cylno, blkno;
UFSD(("ENTER, goal %u\n", goal))
UFSD("ENTER, goal %u\n", goal);
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -721,7 +713,7 @@ gotit:
fs16_sub(sb, &ubh_cg_blks(ucpi, cylno, ufs_cbtorpos(result)), 1);
fs32_sub(sb, &ubh_cg_blktot(ucpi, cylno), 1);
UFSD(("EXIT, result %u\n", result))
UFSD("EXIT, result %u\n", result);
return result;
}
......@@ -781,7 +773,7 @@ static unsigned ufs_bitmap_search(struct super_block *sb,
unsigned start, length, loc, result;
unsigned pos, want, blockmap, mask, end;
UFSD(("ENTER, cg %u, goal %u, count %u\n", ucpi->c_cgx, goal, count));
UFSD("ENTER, cg %u, goal %u, count %u\n", ucpi->c_cgx, goal, count);
usb1 = ubh_get_usb_first (uspi);
ucg = ubh_get_ucg(UCPI_UBH(ucpi));
......@@ -825,7 +817,7 @@ static unsigned ufs_bitmap_search(struct super_block *sb,
want = want_arr[count];
for (pos = 0; pos <= uspi->s_fpb - count; pos++) {
if ((blockmap & mask) == want) {
UFSD(("EXIT, result %u\n", result));
UFSD("EXIT, result %u\n", result);
return result + pos;
}
mask <<= 1;
......@@ -835,7 +827,7 @@ static unsigned ufs_bitmap_search(struct super_block *sb,
ufs_error(sb, "ufs_bitmap_search", "block not in map on cg %u\n",
ucpi->c_cgx);
UFSD(("EXIT (FAILED)\n"));
UFSD("EXIT (FAILED)\n");
return (unsigned)-1;
}
......
......@@ -20,15 +20,6 @@
#include "swab.h"
#include "util.h"
#undef UFS_CYLINDER_DEBUG
#ifdef UFS_CYLINDER_DEBUG
#define UFSD(x) printk("(%s, %d), %s:", __FILE__, __LINE__, __FUNCTION__); printk x;
#else
#define UFSD(x)
#endif
/*
* Read cylinder group into cache. The memory space for ufs_cg_private_info
* structure is already allocated during ufs_read_super.
......@@ -42,7 +33,7 @@ static void ufs_read_cylinder (struct super_block * sb,
struct ufs_cylinder_group * ucg;
unsigned i, j;
UFSD(("ENTER, cgno %u, bitmap_nr %u\n", cgno, bitmap_nr))
UFSD("ENTER, cgno %u, bitmap_nr %u\n", cgno, bitmap_nr);
uspi = sbi->s_uspi;
ucpi = sbi->s_ucpi[bitmap_nr];
ucg = (struct ufs_cylinder_group *)sbi->s_ucg[cgno]->b_data;
......@@ -73,7 +64,7 @@ static void ufs_read_cylinder (struct super_block * sb,
ucpi->c_clustersumoff = fs32_to_cpu(sb, ucg->cg_u.cg_44.cg_clustersumoff);
ucpi->c_clusteroff = fs32_to_cpu(sb, ucg->cg_u.cg_44.cg_clusteroff);
ucpi->c_nclusterblks = fs32_to_cpu(sb, ucg->cg_u.cg_44.cg_nclusterblks);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return;
failed:
......@@ -95,11 +86,11 @@ void ufs_put_cylinder (struct super_block * sb, unsigned bitmap_nr)
struct ufs_cylinder_group * ucg;
unsigned i;
UFSD(("ENTER, bitmap_nr %u\n", bitmap_nr))
UFSD("ENTER, bitmap_nr %u\n", bitmap_nr);
uspi = sbi->s_uspi;
if (sbi->s_cgno[bitmap_nr] == UFS_CGNO_EMPTY) {
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return;
}
ucpi = sbi->s_ucpi[bitmap_nr];
......@@ -122,7 +113,7 @@ void ufs_put_cylinder (struct super_block * sb, unsigned bitmap_nr)
}
sbi->s_cgno[bitmap_nr] = UFS_CGNO_EMPTY;
UFSD(("EXIT\n"))
UFSD("EXIT\n");
}
/*
......@@ -139,7 +130,7 @@ struct ufs_cg_private_info * ufs_load_cylinder (
struct ufs_cg_private_info * ucpi;
unsigned cg, i, j;
UFSD(("ENTER, cgno %u\n", cgno))
UFSD("ENTER, cgno %u\n", cgno);
uspi = sbi->s_uspi;
if (cgno >= uspi->s_ncg) {
......@@ -150,7 +141,7 @@ struct ufs_cg_private_info * ufs_load_cylinder (
* Cylinder group number cg it in cache and it was last used
*/
if (sbi->s_cgno[0] == cgno) {
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return sbi->s_ucpi[0];
}
/*
......@@ -160,16 +151,16 @@ struct ufs_cg_private_info * ufs_load_cylinder (
if (sbi->s_cgno[cgno] != UFS_CGNO_EMPTY) {
if (sbi->s_cgno[cgno] != cgno) {
ufs_panic (sb, "ufs_load_cylinder", "internal error, wrong number of cg in cache");
UFSD(("EXIT (FAILED)\n"))
UFSD("EXIT (FAILED)\n");
return NULL;
}
else {
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return sbi->s_ucpi[cgno];
}
} else {
ufs_read_cylinder (sb, cgno, cgno);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return sbi->s_ucpi[cgno];
}
}
......@@ -204,6 +195,6 @@ struct ufs_cg_private_info * ufs_load_cylinder (
sbi->s_ucpi[0] = ucpi;
ufs_read_cylinder (sb, cgno, 0);
}
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return sbi->s_ucpi[0];
}
......@@ -25,14 +25,6 @@
#include "swab.h"
#include "util.h"
#undef UFS_DIR_DEBUG
#ifdef UFS_DIR_DEBUG
#define UFSD(x) printk("(%s, %d), %s: ", __FILE__, __LINE__, __FUNCTION__); printk x;
#else
#define UFSD(x)
#endif
/*
* NOTE! unlike strncmp, ufs_match returns 1 for success, 0 for failure.
*
......@@ -262,7 +254,7 @@ struct ufs_dir_entry *ufs_find_entry(struct inode *dir, struct dentry *dentry,
struct page *page = NULL;
struct ufs_dir_entry *de;
UFSD(("ENTER, dir_ino %lu, name %s, namlen %u\n", dir->i_ino, name, namelen));
UFSD("ENTER, dir_ino %lu, name %s, namlen %u\n", dir->i_ino, name, namelen);
if (npages == 0 || namelen > UFS_MAXNAMLEN)
goto out;
......@@ -326,7 +318,7 @@ int ufs_add_link(struct dentry *dentry, struct inode *inode)
unsigned from, to;
int err;
UFSD(("ENTER, name %s, namelen %u\n", name, namelen));
UFSD("ENTER, name %s, namelen %u\n", name, namelen);
/*
* We take care of directory expansion in the same loop.
......@@ -442,7 +434,7 @@ ufs_readdir(struct file *filp, void *dirent, filldir_t filldir)
int need_revalidate = filp->f_version != inode->i_version;
unsigned flags = UFS_SB(sb)->s_flags;
UFSD(("BEGIN"));
UFSD("BEGIN\n");
if (pos > inode->i_size - UFS_DIR_REC_LEN(1))
return 0;
......@@ -484,9 +476,9 @@ ufs_readdir(struct file *filp, void *dirent, filldir_t filldir)
offset = (char *)de - kaddr;
UFSD(("filldir(%s,%u)\n", de->d_name,
fs32_to_cpu(sb, de->d_ino)));
UFSD(("namlen %u\n", ufs_get_de_namlen(sb, de)));
UFSD("filldir(%s,%u)\n", de->d_name,
fs32_to_cpu(sb, de->d_ino));
UFSD("namlen %u\n", ufs_get_de_namlen(sb, de));
if ((flags & UFS_DE_MASK) == UFS_DE_44BSD)
d_type = de->d_u.d_44.d_type;
......@@ -524,12 +516,12 @@ int ufs_delete_entry(struct inode *inode, struct ufs_dir_entry *dir,
struct ufs_dir_entry *de = (struct ufs_dir_entry *) (kaddr + from);
int err;
UFSD(("ENTER\n"));
UFSD("ENTER\n");
UFSD(("ino %u, reclen %u, namlen %u, name %s\n",
UFSD("ino %u, reclen %u, namlen %u, name %s\n",
fs32_to_cpu(sb, de->d_ino),
fs16_to_cpu(sb, de->d_reclen),
ufs_get_de_namlen(sb, de), de->d_name));
ufs_get_de_namlen(sb, de), de->d_name);
while ((char*)de < (char*)dir) {
if (de->d_reclen == 0) {
......@@ -554,7 +546,7 @@ int ufs_delete_entry(struct inode *inode, struct ufs_dir_entry *dir,
mark_inode_dirty(inode);
out:
ufs_put_page(page);
UFSD(("EXIT\n"));
UFSD("EXIT\n");
return err;
}
......
......@@ -34,14 +34,6 @@
#include "swab.h"
#include "util.h"
#undef UFS_IALLOC_DEBUG
#ifdef UFS_IALLOC_DEBUG
#define UFSD(x) printk("(%s, %d), %s: ", __FILE__, __LINE__, __FUNCTION__); printk x;
#else
#define UFSD(x)
#endif
/*
* NOTE! When we get the inode, we're the only people
* that have access to it, and as such there are no
......@@ -68,7 +60,7 @@ void ufs_free_inode (struct inode * inode)
int is_directory;
unsigned ino, cg, bit;
UFSD(("ENTER, ino %lu\n", inode->i_ino))
UFSD("ENTER, ino %lu\n", inode->i_ino);
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -130,7 +122,7 @@ void ufs_free_inode (struct inode * inode)
sb->s_dirt = 1;
unlock_super (sb);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
}
/*
......@@ -155,7 +147,7 @@ struct inode * ufs_new_inode(struct inode * dir, int mode)
unsigned cg, bit, i, j, start;
struct ufs_inode_info *ufsi;
UFSD(("ENTER\n"))
UFSD("ENTER\n");
/* Cannot create files in a deleted directory */
if (!dir || !dir->i_nlink)
......@@ -227,7 +219,7 @@ cg_found:
goto failed;
}
}
UFSD(("start = %u, bit = %u, ipg = %u\n", start, bit, uspi->s_ipg))
UFSD("start = %u, bit = %u, ipg = %u\n", start, bit, uspi->s_ipg);
if (ubh_isclr (UCPI_UBH(ucpi), ucpi->c_iusedoff, bit))
ubh_setbit (UCPI_UBH(ucpi), ucpi->c_iusedoff, bit);
else {
......@@ -287,14 +279,14 @@ cg_found:
return ERR_PTR(-EDQUOT);
}
UFSD(("allocating inode %lu\n", inode->i_ino))
UFSD(("EXIT\n"))
UFSD("allocating inode %lu\n", inode->i_ino);
UFSD("EXIT\n");
return inode;
failed:
unlock_super (sb);
make_bad_inode(inode);
iput (inode);
UFSD(("EXIT (FAILED)\n"))
UFSD("EXIT (FAILED)\n");
return ERR_PTR(-ENOSPC);
}
......@@ -41,15 +41,6 @@
#include "swab.h"
#include "util.h"
#undef UFS_INODE_DEBUG
#undef UFS_INODE_DEBUG_MORE
#ifdef UFS_INODE_DEBUG
#define UFSD(x) printk("(%s, %d), %s: ", __FILE__, __LINE__, __FUNCTION__); printk x;
#else
#define UFSD(x)
#endif
static int ufs_block_to_path(struct inode *inode, sector_t i_block, sector_t offsets[4])
{
struct ufs_sb_private_info *uspi = UFS_SB(inode->i_sb)->s_uspi;
......@@ -61,7 +52,7 @@ static int ufs_block_to_path(struct inode *inode, sector_t i_block, sector_t off
int n = 0;
UFSD(("ptrs=uspi->s_apb = %d,double_blocks=%ld \n",ptrs,double_blocks));
UFSD("ptrs=uspi->s_apb = %d,double_blocks=%ld \n",ptrs,double_blocks);
if (i_block < 0) {
ufs_warning(inode->i_sb, "ufs_block_to_path", "block < 0");
} else if (i_block < direct_blocks) {
......@@ -104,8 +95,8 @@ u64 ufs_frag_map(struct inode *inode, sector_t frag)
unsigned flags = UFS_SB(sb)->s_flags;
u64 temp = 0L;
UFSD((": frag = %llu depth = %d\n", (unsigned long long)frag, depth));
UFSD((": uspi->s_fpbshift = %d ,uspi->s_apbmask = %x, mask=%llx\n",uspi->s_fpbshift,uspi->s_apbmask,mask));
UFSD(": frag = %llu depth = %d\n", (unsigned long long)frag, depth);
UFSD(": uspi->s_fpbshift = %d ,uspi->s_apbmask = %x, mask=%llx\n",uspi->s_fpbshift,uspi->s_apbmask,mask);
if (depth == 0)
return 0;
......@@ -186,8 +177,8 @@ static struct buffer_head *ufs_inode_getfrag(struct inode *inode,
__fs32 * p, * p2;
unsigned flags = 0;
UFSD(("ENTER, ino %lu, fragment %u, new_fragment %u, required %u\n",
inode->i_ino, fragment, new_fragment, required))
UFSD("ENTER, ino %lu, fragment %u, new_fragment %u, required %u\n",
inode->i_ino, fragment, new_fragment, required);
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -210,7 +201,7 @@ repeat:
if (metadata) {
result = sb_getblk(sb, uspi->s_sbbase + tmp + blockoff);
if (tmp == fs32_to_cpu(sb, *p)) {
UFSD(("EXIT, result %u\n", tmp + blockoff))
UFSD("EXIT, result %u\n", tmp + blockoff);
return result;
}
brelse (result);
......@@ -288,7 +279,7 @@ repeat:
if (IS_SYNC(inode))
ufs_sync_inode (inode);
mark_inode_dirty(inode);
UFSD(("EXIT, result %u\n", tmp + blockoff))
UFSD("EXIT, result %u\n", tmp + blockoff);
return result;
/* This part : To be implemented ....
......@@ -323,7 +314,7 @@ static struct buffer_head *ufs_block_getfrag(struct inode *inode, struct buffer_
block = ufs_fragstoblks (fragment);
blockoff = ufs_fragnum (fragment);
UFSD(("ENTER, ino %lu, fragment %u, new_fragment %u\n", inode->i_ino, fragment, new_fragment))
UFSD("ENTER, ino %lu, fragment %u, new_fragment %u\n", inode->i_ino, fragment, new_fragment);
result = NULL;
if (!bh)
......@@ -377,10 +368,10 @@ repeat:
sync_dirty_buffer(bh);
inode->i_ctime = CURRENT_TIME_SEC;
mark_inode_dirty(inode);
UFSD(("result %u\n", tmp + blockoff));
UFSD("result %u\n", tmp + blockoff);
out:
brelse (bh);
UFSD(("EXIT\n"));
UFSD("EXIT\n");
return result;
}
......@@ -399,7 +390,7 @@ int ufs_getfrag_block (struct inode *inode, sector_t fragment, struct buffer_hea
if (!create) {
phys64 = ufs_frag_map(inode, fragment);
UFSD(("phys64 = %llu \n",phys64));
UFSD("phys64 = %llu \n",phys64);
if (phys64)
map_bh(bh_result, sb, phys64);
return 0;
......@@ -414,7 +405,7 @@ int ufs_getfrag_block (struct inode *inode, sector_t fragment, struct buffer_hea
lock_kernel();
UFSD(("ENTER, ino %lu, fragment %llu\n", inode->i_ino, (unsigned long long)fragment))
UFSD("ENTER, ino %lu, fragment %llu\n", inode->i_ino, (unsigned long long)fragment);
if (fragment < 0)
goto abort_negative;
if (fragment >
......@@ -514,7 +505,7 @@ struct buffer_head * ufs_bread (struct inode * inode, unsigned fragment,
{
struct buffer_head * bh;
UFSD(("ENTER, ino %lu, fragment %u\n", inode->i_ino, fragment))
UFSD("ENTER, ino %lu, fragment %u\n", inode->i_ino, fragment);
bh = ufs_getfrag (inode, fragment, create, err);
if (!bh || buffer_uptodate(bh))
return bh;
......@@ -586,7 +577,7 @@ void ufs_read_inode (struct inode * inode)
unsigned i;
unsigned flags;
UFSD(("ENTER, ino %lu\n", inode->i_ino))
UFSD("ENTER, ino %lu\n", inode->i_ino);
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -652,7 +643,7 @@ void ufs_read_inode (struct inode * inode)
brelse (bh);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return;
bad_inode:
......@@ -660,7 +651,7 @@ bad_inode:
return;
ufs2_inode :
UFSD(("Reading ufs2 inode, ino %lu\n", inode->i_ino))
UFSD("Reading ufs2 inode, ino %lu\n", inode->i_ino);
ufs2_inode = (struct ufs2_inode *)(bh->b_data + sizeof(struct ufs2_inode) * ufs_inotofsbo(inode->i_ino));
......@@ -712,7 +703,7 @@ ufs2_inode :
brelse(bh);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return;
}
......@@ -726,7 +717,7 @@ static int ufs_update_inode(struct inode * inode, int do_sync)
unsigned i;
unsigned flags;
UFSD(("ENTER, ino %lu\n", inode->i_ino))
UFSD("ENTER, ino %lu\n", inode->i_ino);
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -787,7 +778,7 @@ static int ufs_update_inode(struct inode * inode, int do_sync)
sync_dirty_buffer(bh);
brelse (bh);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return 0;
}
......
......@@ -34,17 +34,6 @@
#include "swab.h" /* will go away - see comment in mknod() */
#include "util.h"
/*
#undef UFS_NAMEI_DEBUG
*/
#define UFS_NAMEI_DEBUG
#ifdef UFS_NAMEI_DEBUG
#define UFSD(x) printk("(%s, %d), %s: ", __FILE__, __LINE__, __FUNCTION__); printk x;
#else
#define UFSD(x)
#endif
static inline int ufs_add_nondir(struct dentry *dentry, struct inode *inode)
{
int err = ufs_add_link(dentry, inode);
......@@ -90,8 +79,13 @@ static struct dentry *ufs_lookup(struct inode * dir, struct dentry *dentry, stru
static int ufs_create (struct inode * dir, struct dentry * dentry, int mode,
struct nameidata *nd)
{
struct inode * inode = ufs_new_inode(dir, mode);
int err = PTR_ERR(inode);
struct inode *inode;
int err;
UFSD("BEGIN\n");
inode = ufs_new_inode(dir, mode);
err = PTR_ERR(inode);
if (!IS_ERR(inode)) {
inode->i_op = &ufs_file_inode_operations;
inode->i_fop = &ufs_file_operations;
......@@ -101,6 +95,7 @@ static int ufs_create (struct inode * dir, struct dentry * dentry, int mode,
err = ufs_add_nondir(dentry, inode);
unlock_kernel();
}
UFSD("END: err=%d\n", err);
return err;
}
......
This diff is collapsed.
......@@ -49,14 +49,6 @@
#include "swab.h"
#include "util.h"
#undef UFS_TRUNCATE_DEBUG
#ifdef UFS_TRUNCATE_DEBUG
#define UFSD(x) printk("(%s, %d), %s: ", __FILE__, __LINE__, __FUNCTION__); printk x;
#else
#define UFSD(x)
#endif
/*
* Secure deletion currently doesn't work. It interacts very badly
* with buffers shared with memory mappings, and for that reason
......@@ -82,7 +74,7 @@ static int ufs_trunc_direct (struct inode * inode)
unsigned i, tmp;
int retry;
UFSD(("ENTER\n"))
UFSD("ENTER\n");
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -105,7 +97,7 @@ static int ufs_trunc_direct (struct inode * inode)
block2 = ufs_fragstoblks (frag3);
}
UFSD(("frag1 %u, frag2 %u, block1 %u, block2 %u, frag3 %u, frag4 %u\n", frag1, frag2, block1, block2, frag3, frag4))
UFSD("frag1 %u, frag2 %u, block1 %u, block2 %u, frag3 %u, frag4 %u\n", frag1, frag2, block1, block2, frag3, frag4);
if (frag1 >= frag2)
goto next1;
......@@ -171,7 +163,7 @@ next1:
ufs_free_fragments (inode, tmp, frag4);
next3:
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return retry;
}
......@@ -186,7 +178,7 @@ static int ufs_trunc_indirect (struct inode * inode, unsigned offset, __fs32 *p)
unsigned frag_to_free, free_count;
int retry;
UFSD(("ENTER\n"))
UFSD("ENTER\n");
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -252,7 +244,7 @@ static int ufs_trunc_indirect (struct inode * inode, unsigned offset, __fs32 *p)
}
ubh_brelse (ind_ubh);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return retry;
}
......@@ -266,7 +258,7 @@ static int ufs_trunc_dindirect (struct inode *inode, unsigned offset, __fs32 *p)
__fs32 * dind;
int retry = 0;
UFSD(("ENTER\n"))
UFSD("ENTER\n");
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -315,7 +307,7 @@ static int ufs_trunc_dindirect (struct inode *inode, unsigned offset, __fs32 *p)
}
ubh_brelse (dind_bh);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return retry;
}
......@@ -330,7 +322,7 @@ static int ufs_trunc_tindirect (struct inode * inode)
__fs32 * tind, * p;
int retry;
UFSD(("ENTER\n"))
UFSD("ENTER\n");
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -375,7 +367,7 @@ static int ufs_trunc_tindirect (struct inode * inode)
}
ubh_brelse (tind_bh);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
return retry;
}
......@@ -386,7 +378,7 @@ void ufs_truncate (struct inode * inode)
struct ufs_sb_private_info * uspi;
int retry;
UFSD(("ENTER\n"))
UFSD("ENTER\n");
sb = inode->i_sb;
uspi = UFS_SB(sb)->s_uspi;
......@@ -417,5 +409,5 @@ void ufs_truncate (struct inode * inode)
ufsi->i_lastfrag = DIRECT_FRAGMENT;
unlock_kernel();
mark_inode_dirty(inode);
UFSD(("EXIT\n"))
UFSD("EXIT\n");
}
......@@ -14,15 +14,6 @@
#include "swab.h"
#include "util.h"
#undef UFS_UTILS_DEBUG
#ifdef UFS_UTILS_DEBUG
#define UFSD(x) printk("(%s, %d), %s: ", __FILE__, __LINE__, __FUNCTION__); printk x;
#else
#define UFSD(x)
#endif
struct ufs_buffer_head * _ubh_bread_ (struct ufs_sb_private_info * uspi,
struct super_block *sb, u64 fragment, u64 size)
{
......
......@@ -220,6 +220,19 @@ typedef __u16 __bitwise __fs16;
*/
#define UFS_MINFREE 5
#define UFS_DEFAULTOPT UFS_OPTTIME
/*
* Debug code
*/
#ifdef CONFIG_UFS_DEBUG
# define UFSD(f, a...) { \
printk ("UFSD (%s, %d): %s:", \
__FILE__, __LINE__, __FUNCTION__); \
printk (f, ## a); \
}
#else
# define UFSD(f, a...) /**/
#endif
/*
* Turn file system block numbers into disk block addresses.
......
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