We have been experiencing frequent crashes in the PVFS2 kernel module
when applications use standard system I/O to write to PVFS2 files. We
are running the Linux 2.6.9-55.0.2 smp kernel, and PVFS2 v2.6.3.
The general protection fault almost always occurs at
pvfs2_devreq_writev+351.
In our build, the invalid reference specifically occurs in the
qhash_del() operation, within the inline qhash_search_and_remove()
function called by pvfs2_devreq_writev(). See excerpts below:
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
static ssize_t pvfs2_devreq_writev(
struct file *file,
const struct iovec *iov,
unsigned long count,
loff_t * offset)
{
.
.
.
/* lookup (and remove) the op based on the tag */
hash_link = qhash_search_and_remove(htable_ops_in_progress, &(tag));
if (hash_link)
{
.
.
.
}
/* qhash_search_and_remove()
*
* searches for and removes a link in the hash table
* that matches the given key
*
* returns pointer to link on success, NULL on failure (or item
* not found). On success, link is removed from hashtable.
*/
static inline struct qhash_head *qhash_search_and_remove(
struct qhash_table *table,
void *key)
{
int index = 0;
struct qhash_head *tmp_link = NULL;
/* find the hash value */ index = table->hash(key,
table->table_size);
/* linear search at index to find match */
qhash_lock(&table->lock);
qhash_for_each(tmp_link, &(table->array[index]))
{
if (table->compare(key, tmp_link))
{
qhash_del(tmp_link);
qhash_unlock(&table->lock);
return (tmp_link);
}
}
qhash_unlock(&table->lock);
return (NULL);
}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
We have since run pvfs2-fsck on the file system and have found some
corruption. So we're not sure if what we're seeing is just a
second-order effect of the corruption, or is the actual cause of the
corruption.
So we're passing this along to you to see if you've had any similar
reports, or can point us in the right direction to help find the
problem.
The crash file sys and bt info follows. Please let us know if you need
more information.
Thanks,
Bill
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
crash> sys
SYSTEM MAP: /boot/System.map-2.6.9-55.0.2.ELsmp
DEBUG KERNEL: /home/jsbillin/vmlinux-2.6.9-55.ELsmp (2.6.9-55.ELsmp)
DUMPFILE: /var/crash/172.18.0.85-2007-08-06-07:47/vmcore
CPUS: 4
DATE: Fri Aug 17 11:53:17 2007
UPTIME: 11 days, 04:08:05
LOAD AVERAGE: 2.49, 2.10, 1.63
TASKS: 96
NODENAME: woodhen-085
RELEASE: 2.6.9-55.0.2.ELsmp
VERSION: #1 SMP Mon Jun 25 14:12:33 EDT 2007
MACHINE: x86_64 (2660 Mhz)
MEMORY: 9 GB
PANIC: ""
crash> bt
PID: 3454 TASK: 10236b63030 CPU: 0 COMMAND: "pvfs2-client-co"
#0 [10232fbbc60] netpoll_start_netdump at ffffffffa0249366
#1 [10232fbbc90] die at ffffffff80111c00
#2 [10232fbbcb0] do_general_protection at ffffffff801124e5
#3 [10232fbbcf0] error_exit at ffffffff80110d91
[exception RIP: pvfs2_devreq_writev+351]
RIP: ffffffffa0226948 RSP: 0000010232fbbda8 RFLAGS: 00010246
RAX: 0000000000000000 RBX: 40903a138d84f800 RCX: 0000000000000000
RDX: 40903a138d84f800 RSI: 00000101aeab1bd8 RDI: 0000010232fbbdc0
RBP: 0000010006bccd40 R8: 0000000000000000 R9: 0000000000000000
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
R13: 000001020557e600 R14: 000001020557e5f0 R15: 0000010232fbbe88
ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
#4 [10232fbbda0] pvfs2_devreq_writev at ffffffffa022693e
#5 [10232fbbe00] sock_readv_writev at ffffffff802a91f9
#6 [10232fbbe60] do_readv_writev at ffffffff8017a45f
#7 [10232fbbf40] sys_writev at ffffffff8017a631
#8 [10232fbbf80] system_call at ffffffff8011026a
RIP: 00000035854bfcdb RSP: 0000007fbffff228 RFLAGS: 00010202
RAX: 0000000000000014 RBX: ffffffff8011026a RCX: 00000035854bf1e9
RDX: 0000000000000004 RSI: 0000007fbffff120 RDI: 0000000000000005
RBP: 0000000000000000 R8: 0000000000000001 R9: 0000000000000004
R10: 0000000000000001 R11: 0000000000000206 R12: 0000000000000005
R13: 0000007fbffff120 R14: 0000000000000004 R15: 0000000000000000
ORIG_RAX: 0000000000000014 CS: 0033 SS: 002b
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_______________________________________________
Pvfs2-users mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users