Here is an updated version that catches the other stray cases like
perf-counters/acache. It also corrects that warning message about inode
allocations.
-Phil
Bart Taylor wrote:
Thanks Phil, that patch works great! I successfully ran the previous
script on a few thousand mounts and did not have any more problems.
It looks like you nailed down where the problem lies even if it isn't
fixed in every case. I ran the 'for' loop you mentioned that bounces off
the acache perf-counter just to see what would happen, and it still
causes a hang as I think you expected.
Bart.
On Tue, May 13, 2008 at 7:55 AM, Phil Carns <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
Hi Bart,
Could you try this patch out and see if it fixes your problem? This
is checked into trunk as well. This won't eliminate the inode alloc
warning, but I think it does actually fix the umount hang.
I also suspect that this same issue may affect a few other cases as
well, but it would be good if you could confirm this much for starters.
I think the same class of bug is affecting some of the proc file
handlers, for example. Cases like this also cause a
pvfs2-client-core hang:
"for i in `seq 1 100`; do echo $i; cat
/proc/sys/pvfs2/perf-counters/acache; done"
thanks!
-Phil
Bart Taylor wrote:
Hey guys,
I have been running some tests against the 271 release, and I am
having some trouble with multiple mounts on one client. My
setup has 2 servers (both meta and io servers on local disk) and
one client all of which are running RHEL4 update 6. All that was
done on the test client is loading the kernel module and
starting pvfs2-client. I can mount the file system once and use
it without any problem, but I have attached a test script -
takes file system information and a number of times to mount it
- that keeps failing. Here are the steps it executes:
- For the number of mounts requested
- Create a new directory (defaults to /tmp/mount_limit.#)
- Mount the specified file system on the new dir
- For the number of mounts requested
- Do a recursive ls comparison (keep a copy the first time
through and compare subsequent mounts to the first)
- Unmount the dir
- Delete the dir
I have been able to consistently reproduce the problem running
the attached script like this:
./test-mount-limit.pl pvfs2-server1:3334/pvfs2-fs 100
It stalls every time with either 36 or 37 mounts remaining. The
script has been successfully run on previous versions of pvfs2
up to several thousand mounts.
The problem comes at the umount step. Eventually the process
just hangs, strands a bunch of mounts, and umount doesn't work
as expected after that even from the command line. When it
stalls, I start seeing messages like this one in dmesg and syslog:
May 2 15:02:44 client-node kernel: pvfs2_kill_sb: (WARNING)
number of inode allocs (4100) != number of inode deallocs (2665)
I am running this against an almost empty file system since the
recursive ls would take a while if it were large. Am I doing
something wrong/strange here, or is there a client/kernel
problem? The test seems pretty straight-forward, and I've never
had an issue with the script before. I'm not sure if it was run
against the 2.7.0 release though.
Bart.
------------------------------------------------------------------------
_______________________________________________
Pvfs2-developers mailing list
[email protected]
<mailto:[email protected]>
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
---------------------
PatchSet 6763
Date: 2008/05/13 09:46:28
Author: pcarns
Branch: HEAD
Tag: (none)
Log:
The umount request in pvfs2-client was not reposting an unexpected device
request, which means that all outstanding operations would be exhausted
after 64 umounts (and hang the pvfs2-client-core daemon). This changes
makes umount act like some of the more normal operation types.
Suspect a similar problem in other operations that are handled inline (like
perf monitoring and other /proc/sys/pvfs2 handlers) but will address those
separately.
Fixes bug reported by Bart Taylor:
http://www.beowulf-underground.org/pipermail/pvfs2-developers/2008-May/004018.html
Members:
src/apps/kernel/linux/pvfs2-client-core.c:1.94->1.95
Index: pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c
diff -u pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.94 pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.95
--- pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.94 Wed May 7 15:12:51 2008
+++ pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c Tue May 13 09:46:28 2008
@@ -1169,7 +1169,9 @@
ok:
PVFS_util_free_mntent(&mntent);
- write_inlined_device_response(vfs_request);
+ /* let handle_unexp_vfs_request() function detect completion and handle */
+ vfs_request->op_id = -1;
+
return 0;
fail_downcall:
gossip_err(
@@ -2666,6 +2668,8 @@
}
break;
}
+ case PVFS2_VFS_OP_FS_UMOUNT:
+ break;
default:
gossip_err("Completed upcall of unknown type %x!\n",
vfs_request->in_upcall.type);
@@ -2855,6 +2859,7 @@
calls that are serviced inline.
*/
case PVFS2_VFS_OP_FS_UMOUNT:
+ posted_op = 1;
ret = service_fs_umount_request(vfs_request);
break;
case PVFS2_VFS_OP_PERF_COUNT:
---------------------
PatchSet 6764
Date: 2008/05/13 10:04:01
Author: pcarns
Branch: HEAD
Tag: (none)
Log:
apply umount fix to perf counter path
Members:
src/apps/kernel/linux/pvfs2-client-core.c:1.95->1.96
Index: pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c
diff -u pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.95 pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.96
--- pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.95 Tue May 13 09:46:28 2008
+++ pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c Tue May 13 10:04:01 2008
@@ -1188,7 +1188,6 @@
static PVFS_error service_perf_count_request(vfs_request_t *vfs_request)
{
char* tmp_str;
- PVFS_error ret = -PVFS_EINVAL;
gossip_debug(
GOSSIP_CLIENTCORE_DEBUG, "Got a perf count request of type %d\n",
@@ -1249,12 +1248,11 @@
default:
/* unsupported request, didn't match anything in case statement */
vfs_request->out_downcall.status = -PVFS_ENOSYS;
- write_inlined_device_response(vfs_request);
- return 0;
break;
}
- write_inlined_device_response(vfs_request);
+ /* let handle_unexp_vfs_request() function detect completion and handle */
+ vfs_request->op_id = -1;
return 0;
}
@@ -2669,6 +2667,7 @@
break;
}
case PVFS2_VFS_OP_FS_UMOUNT:
+ case PVFS2_VFS_OP_PERF_COUNT:
break;
default:
gossip_err("Completed upcall of unknown type %x!\n",
@@ -2863,6 +2862,7 @@
ret = service_fs_umount_request(vfs_request);
break;
case PVFS2_VFS_OP_PERF_COUNT:
+ posted_op = 1;
ret = service_perf_count_request(vfs_request);
break;
case PVFS2_VFS_OP_PARAM:
---------------------
PatchSet 6765
Date: 2008/05/13 10:08:07
Author: pcarns
Branch: HEAD
Tag: (none)
Log:
apply umount fix to runtime param operations
Members:
src/apps/kernel/linux/pvfs2-client-core.c:1.96->1.97
Index: pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c
diff -u pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.96 pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.97
--- pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.96 Tue May 13 10:04:01 2008
+++ pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c Tue May 13 10:08:07 2008
@@ -1271,6 +1271,7 @@
vfs_request->in_upcall.req.param.op);
vfs_request->out_downcall.type = vfs_request->in_upcall.type;
+ vfs_request->op_id = -1;
switch(vfs_request->in_upcall.req.param.op)
{
@@ -1337,7 +1338,6 @@
vfs_request->in_upcall.req.param.value;
}
vfs_request->out_downcall.status = 0;
- write_inlined_device_response(vfs_request);
return(0);
break;
case PVFS2_PARAM_REQUEST_OP_PERF_HISTORY_SIZE:
@@ -1359,7 +1359,6 @@
ncache_pc, PINT_PERF_HISTORY_SIZE, tmp_perf_val);
}
vfs_request->out_downcall.status = ret;
- write_inlined_device_response(vfs_request);
return(0);
break;
case PVFS2_PARAM_REQUEST_OP_PERF_RESET:
@@ -1372,7 +1371,6 @@
}
vfs_request->out_downcall.resp.param.value = 0;
vfs_request->out_downcall.status = 0;
- write_inlined_device_response(vfs_request);
return(0);
break;
}
@@ -1381,7 +1379,6 @@
{
/* unsupported request, didn't match anything in case statement */
vfs_request->out_downcall.status = -PVFS_ENOSYS;
- write_inlined_device_response(vfs_request);
return 0;
}
@@ -1416,7 +1413,6 @@
PINT_ncache_set_info(tmp_param, val);
}
}
- write_inlined_device_response(vfs_request);
return 0;
}
#undef ACACHE
@@ -2668,6 +2664,7 @@
}
case PVFS2_VFS_OP_FS_UMOUNT:
case PVFS2_VFS_OP_PERF_COUNT:
+ case PVFS2_VFS_OP_PARAM:
break;
default:
gossip_err("Completed upcall of unknown type %x!\n",
---------------------
PatchSet 6766
Date: 2008/05/13 10:37:58
Author: pcarns
Branch: HEAD
Tag: (none)
Log:
applying inline completion fix to fs key operation; untested (requires posix
extensions to trigger)
Members:
src/apps/kernel/linux/pvfs2-client-core.c:1.97->1.98
Index: pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c
diff -u pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.97 pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.98
--- pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.97 Tue May 13 10:08:07 2008
+++ pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c Tue May 13 10:37:58 2008
@@ -1489,7 +1489,7 @@
out:
vfs_request->out_downcall.status = ret;
vfs_request->out_downcall.type = vfs_request->in_upcall.type;
- write_inlined_device_response(vfs_request);
+ vfs_request->op_id = -1;
return 0;
}
@@ -2665,6 +2665,7 @@
case PVFS2_VFS_OP_FS_UMOUNT:
case PVFS2_VFS_OP_PERF_COUNT:
case PVFS2_VFS_OP_PARAM:
+ case PVFS2_VFS_OP_FSKEY:
break;
default:
gossip_err("Completed upcall of unknown type %x!\n",
@@ -2863,9 +2864,11 @@
ret = service_perf_count_request(vfs_request);
break;
case PVFS2_VFS_OP_PARAM:
+ posted_op = 1;
ret = service_param_request(vfs_request);
break;
case PVFS2_VFS_OP_FSKEY:
+ posted_op = 1;
ret = service_fs_key_request(vfs_request);
break;
/*
---------------------
PatchSet 6768
Date: 2008/05/13 11:55:24
Author: pcarns
Branch: HEAD
Tag: (none)
Log:
applying inlined completion logic fix to mmap ra cache hit path
Members:
src/apps/kernel/linux/pvfs2-client-core.c:1.98->1.99
Index: pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c
diff -u pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.98 pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.99
--- pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.98 Tue May 13 10:37:58 2008
+++ pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c Tue May 13 11:55:24 2008
@@ -1704,8 +1704,8 @@
free(vfs_request->io_tmp_buf);
}
vfs_request->io_tmp_buf = NULL;
+ vfs_request->op_id = -1;
- write_inlined_device_response(vfs_request);
return 0;
#endif /* USE_MMAP_RA_CACHE */
}
---------------------
PatchSet 6769
Date: 2008/05/13 12:00:48
Author: pcarns
Branch: HEAD
Tag: (none)
Log:
mmap ra flush case
Members:
src/apps/kernel/linux/pvfs2-client-core.c:1.99->1.100
Index: pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c
diff -u pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.99 pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.100
--- pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.99 Tue May 13 11:55:24 2008
+++ pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c Tue May 13 12:00:48 2008
@@ -1899,8 +1899,6 @@
static PVFS_error service_mmap_ra_flush_request(
vfs_request_t *vfs_request)
{
- PVFS_error ret = -PVFS_EINVAL;
-
gossip_debug(
GOSSIP_MMAP_RCACHE_DEBUG, "Flushing mmap-racache elem %llu, %d\n",
llu(vfs_request->in_upcall.req.ra_cache_flush.refn.handle),
@@ -1912,8 +1910,8 @@
/* we need to send a blank success response */
vfs_request->out_downcall.type = PVFS2_VFS_OP_MMAP_RA_FLUSH;
vfs_request->out_downcall.status = 0;
+ vfs_request->op_id = -1;
- write_inlined_device_response(vfs_request);
return 0;
}
#endif
---------------------
PatchSet 6771
Date: 2008/05/13 13:21:52
Author: pcarns
Branch: HEAD
Tag: (none)
Log:
update inline completion path for operation cancel
Members:
src/apps/kernel/linux/pvfs2-client-core.c:1.100->1.101
Index: pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c
diff -u pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.100 pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.101
--- pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.100 Tue May 13 12:00:48 2008
+++ pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c Tue May 13 13:21:52 2008
@@ -1935,8 +1935,8 @@
vfs_request->out_downcall.type = PVFS2_VFS_OP_CANCEL;
vfs_request->out_downcall.status = ret;
+ vfs_request->op_id = -1;
- write_inlined_device_response(vfs_request);
return 0;
}
@@ -2664,6 +2664,7 @@
case PVFS2_VFS_OP_PERF_COUNT:
case PVFS2_VFS_OP_PARAM:
case PVFS2_VFS_OP_FSKEY:
+ case PVFS2_VFS_OP_CANCEL:
break;
default:
gossip_err("Completed upcall of unknown type %x!\n",
@@ -2888,10 +2889,12 @@
flushes are handled inline
*/
case PVFS2_VFS_OP_MMAP_RA_FLUSH:
+ posted_op = 1;
ret = service_mmap_ra_flush_request(vfs_request);
break;
#endif
case PVFS2_VFS_OP_CANCEL:
+ posted_op = 1;
ret = service_operation_cancellation(vfs_request);
break;
case PVFS2_VFS_OP_FSYNC:
---------------------
PatchSet 6772
Date: 2008/05/13 13:30:23
Author: pcarns
Branch: HEAD
Tag: (none)
Log:
get rid of posted_op flag; there is no need for an extra flag to mark
operations that can finish immediately
Members:
src/apps/kernel/linux/pvfs2-client-core.c:1.101->1.102
Index: pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c
diff -u pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.101 pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.102
--- pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c:1.101 Tue May 13 13:21:52 2008
+++ pvfs2-1/src/apps/kernel/linux/pvfs2-client-core.c Tue May 13 13:30:23 2008
@@ -2708,7 +2708,6 @@
vfs_request_t *vfs_request)
{
PVFS_error ret = -PVFS_EINVAL;
- int posted_op = 0;
assert(vfs_request);
@@ -2783,71 +2782,54 @@
switch(vfs_request->in_upcall.type)
{
case PVFS2_VFS_OP_LOOKUP:
- posted_op = 1;
ret = post_lookup_request(vfs_request);
break;
case PVFS2_VFS_OP_CREATE:
- posted_op = 1;
ret = post_create_request(vfs_request);
break;
case PVFS2_VFS_OP_SYMLINK:
- posted_op = 1;
ret = post_symlink_request(vfs_request);
break;
case PVFS2_VFS_OP_GETATTR:
- posted_op = 1;
ret = post_getattr_request(vfs_request);
break;
case PVFS2_VFS_OP_SETATTR:
- posted_op = 1;
ret = post_setattr_request(vfs_request);
break;
case PVFS2_VFS_OP_REMOVE:
- posted_op = 1;
ret = post_remove_request(vfs_request);
break;
case PVFS2_VFS_OP_MKDIR:
- posted_op = 1;
ret = post_mkdir_request(vfs_request);
break;
case PVFS2_VFS_OP_READDIR:
- posted_op = 1;
ret = post_readdir_request(vfs_request);
break;
case PVFS2_VFS_OP_READDIRPLUS:
- posted_op = 1;
ret = post_readdirplus_request(vfs_request);
break;
case PVFS2_VFS_OP_RENAME:
- posted_op = 1;
ret = post_rename_request(vfs_request);
break;
case PVFS2_VFS_OP_TRUNCATE:
- posted_op = 1;
ret = post_truncate_request(vfs_request);
break;
case PVFS2_VFS_OP_GETXATTR:
- posted_op = 1;
ret = post_getxattr_request(vfs_request);
break;
case PVFS2_VFS_OP_SETXATTR:
- posted_op = 1;
ret = post_setxattr_request(vfs_request);
break;
case PVFS2_VFS_OP_REMOVEXATTR:
- posted_op = 1;
ret = post_removexattr_request(vfs_request);
break;
case PVFS2_VFS_OP_LISTXATTR:
- posted_op = 1;
ret = post_listxattr_request(vfs_request);
break;
case PVFS2_VFS_OP_STATFS:
- posted_op = 1;
ret = post_statfs_request(vfs_request);
break;
case PVFS2_VFS_OP_FS_MOUNT:
- posted_op = 1;
ret = post_fs_mount_request(vfs_request);
break;
/*
@@ -2855,19 +2837,15 @@
calls that are serviced inline.
*/
case PVFS2_VFS_OP_FS_UMOUNT:
- posted_op = 1;
ret = service_fs_umount_request(vfs_request);
break;
case PVFS2_VFS_OP_PERF_COUNT:
- posted_op = 1;
ret = service_perf_count_request(vfs_request);
break;
case PVFS2_VFS_OP_PARAM:
- posted_op = 1;
ret = service_param_request(vfs_request);
break;
case PVFS2_VFS_OP_FSKEY:
- posted_op = 1;
ret = service_fs_key_request(vfs_request);
break;
/*
@@ -2876,11 +2854,9 @@
blocking and handled inline
*/
case PVFS2_VFS_OP_FILE_IO:
- posted_op = 1;
ret = post_io_request(vfs_request);
break;
case PVFS2_VFS_OP_FILE_IOX:
- posted_op = 1;
ret = post_iox_request(vfs_request);
break;
#ifdef USE_MMAP_RA_CACHE
@@ -2889,16 +2865,13 @@
flushes are handled inline
*/
case PVFS2_VFS_OP_MMAP_RA_FLUSH:
- posted_op = 1;
ret = service_mmap_ra_flush_request(vfs_request);
break;
#endif
case PVFS2_VFS_OP_CANCEL:
- posted_op = 1;
ret = service_operation_cancellation(vfs_request);
break;
case PVFS2_VFS_OP_FSYNC:
- posted_op = 1;
ret = post_fsync_request(vfs_request);
break;
case PVFS2_VFS_OP_INVALID:
@@ -2906,13 +2879,14 @@
gossip_err(
"Got an unrecognized/unimplemented vfs operation of "
"type %x.\n", vfs_request->in_upcall.type);
+ ret = -PVFS_ENOSYS;
break;
}
/* if we failed to post the operation, then we should go ahead and write
* a generic response down with the error code filled in
*/
- if(posted_op == 1 && ret < 0)
+ if(ret < 0)
{
#ifndef GOSSIP_DISABLE_DEBUG
gossip_err(
---------------------
PatchSet 6773
Date: 2008/05/13 14:18:41
Author: pcarns
Branch: HEAD
Tag: (none)
Log:
silence faulty inode count warning by tracking inode allocations in relation
to the superblock rather than globally
https://trac.mcs.anl.gov/projects/pvfs/ticket/7
Members:
src/kernel/linux-2.6/pvfs2-kernel.h:1.151->1.152
src/kernel/linux-2.6/super.c:1.99->1.100
Index: pvfs2-1/src/kernel/linux-2.6/pvfs2-kernel.h
diff -u pvfs2-1/src/kernel/linux-2.6/pvfs2-kernel.h:1.151 pvfs2-1/src/kernel/linux-2.6/pvfs2-kernel.h:1.152
--- pvfs2-1/src/kernel/linux-2.6/pvfs2-kernel.h:1.151 Fri Apr 11 13:05:27 2008
+++ pvfs2-1/src/kernel/linux-2.6/pvfs2-kernel.h Tue May 13 14:18:41 2008
@@ -459,6 +459,8 @@
struct super_block *sb;
int mount_pending;
struct list_head list;
+ atomic_t pvfs2_inode_alloc_count;
+ atomic_t pvfs2_inode_dealloc_count;
} pvfs2_sb_info_t;
/** a temporary structure used only for sb mount time that groups the
Index: pvfs2-1/src/kernel/linux-2.6/super.c
diff -u pvfs2-1/src/kernel/linux-2.6/super.c:1.99 pvfs2-1/src/kernel/linux-2.6/super.c:1.100
--- pvfs2-1/src/kernel/linux-2.6/super.c:1.99 Mon May 12 16:02:52 2008
+++ pvfs2-1/src/kernel/linux-2.6/super.c Tue May 13 14:18:41 2008
@@ -17,7 +17,6 @@
#ifdef HAVE_GET_FS_KEY_SUPER_OPERATIONS
static void pvfs2_sb_get_fs_key(struct super_block *sb, char **ppkey, int *keylen);
#endif
-static atomic_t pvfs2_inode_alloc_count, pvfs2_inode_dealloc_count;
static char *keywords[] = {"intr", "acl", "suid", "noatime", "nodiratime"};
static int num_possible_keywords = sizeof(keywords)/sizeof(char *);
@@ -201,7 +200,7 @@
{
new_inode = &pvfs2_inode->vfs_inode;
gossip_debug(GOSSIP_SUPER_DEBUG, "pvfs2_alloc_inode: allocated %p\n", pvfs2_inode);
- atomic_inc(&pvfs2_inode_alloc_count);
+ atomic_inc(&(PVFS2_SB(sb)->pvfs2_inode_alloc_count));
new_inode->i_flags &= ~(S_APPEND|S_IMMUTABLE|S_NOATIME);
}
return new_inode;
@@ -216,7 +215,7 @@
gossip_debug(GOSSIP_SUPER_DEBUG, "pvfs2_destroy_inode: deallocated %p destroying inode %llu\n",
pvfs2_inode, llu(get_handle_from_ino(inode)));
- atomic_inc(&pvfs2_inode_dealloc_count);
+ atomic_inc(&(PVFS2_SB(inode->i_sb)->pvfs2_inode_dealloc_count));
pvfs2_inode_finalize(pvfs2_inode);
pvfs2_inode_release(pvfs2_inode);
}
@@ -1315,8 +1314,8 @@
#endif
{
int count1, count2;
- count1 = atomic_read(&pvfs2_inode_alloc_count);
- count2 = atomic_read(&pvfs2_inode_dealloc_count);
+ count1 = atomic_read(&(PVFS2_SB(sb)->pvfs2_inode_alloc_count));
+ count2 = atomic_read(&(PVFS2_SB(sb)->pvfs2_inode_dealloc_count));
if (count1 != count2)
{
gossip_err("pvfs2_kill_sb: (WARNING) number of inode allocs (%d) != number of inode deallocs (%d)\n",
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers