Hello,

On Wednesday 02 August 2006 00:39, Craig Shelley wrote:
> On Fri, 2006-06-23 at 02:51 +0300, Jussi Judin wrote:
> > After that I upgraded to Debian patched kernel 2.6.16-14 and to
> > reiser4 patch 2.6.16-4 for that kernel and ran fsck.reiser4. Then I
> > got errors like this in kern.log after a while:
> >
> > WARNING: Error for inode 1731981 (-2)
> > reiser4[nfsd(3817)]: key_warning
> > (fs/reiser4/plugin/file_plugin_common.c:513)[nikita-717]:
> > WARNING: Error for inode 1703086 (-2)
> > reiser4[nfsd(3818)]: key_warning
> > (fs/reiser4/plugin/file_plugin_common.c:513)[nikita-717]:
> > WARNING: Error for inode 1726433 (-2)
> > reiser4[nfsd(3818)]: key_warning
> > (fs/reiser4/plugin/file_plugin_common.c:513)[nikita-717]:
>
> I too am getting these warnings:
>
> Jul 27 06:28:15 prometheus kernel: reiser4[find(10770)]: key_warning
> (fs/reiser4/plugin/file_plugin_common.c:513)[nikita-717]:
> Jul 27 06:28:15 prometheus kernel: WARNING: Error for inode 3922698
> (-2) [REPEATED 17 TIMES]
> Jul 27 06:28:15 prometheus kernel: reiser4[find(10770)]: key_warning
> (fs/reiser4/plugin/file_plugin_common.c:513)[nikita-717]:
> Jul 27 06:28:15 prometheus kernel: WARNING: Error for inode 3922697
> (-2) [REPEATED 17 TIMES]
> Jul 27 06:28:16 prometheus kernel: reiser4[find(10770)]: key_warning
> (fs/reiser4/plugin/file_plugin_common.c:513)[nikita-717]:
> Jul 27 06:28:16 prometheus kernel: WARNING: Error for inode 3922696
> (-2) [REPEATED 17 TIMES]
>
> ...
> ...
>
> Jul 27 06:28:19 prometheus kernel: reiser4[find(10770)]:
> cbk_level_lookup (fs/reiser4/search.c:961)[vs-3533]:
> Jul 27 06:28:19 prometheus kernel: WARNING: Keys are inconsistent.
> Fsck? Jul 27 06:28:19 prometheus kernel: reiser4[find(10770)]:
> key_warning (fs/reiser4/plugin/file_plugin_common.c:513)[nikita-717]:
> Jul 27 06:28:19 prometheus kernel: WARNING: Error for inode 3922690
> (-5)
>
>
> System information:
> Kernel: 2.6.16.20
> Patches: reiser4-for-2.6.16-4.patch.gz

please upgrade to 2.6.17 and reiser4-for-2.6.17-3

or apply the following patch:

Index: linux-2.6.16/fs/reiser4/plugin/file/file.c
===================================================================
--- linux-2.6.16.orig/fs/reiser4/plugin/file/file.c
+++ linux-2.6.16/fs/reiser4/plugin/file/file.c
@@ -1633,14 +1633,18 @@ static size_t read_file(hint_t * hint, s
                        /* error happened */
                        break;
 
-               if (coord->between != AT_UNIT)
+               if (coord->between != AT_UNIT) {
                        /* there were no items corresponding to given offset */
+                       done_lh(hint->ext_coord.lh);
                        break;
+               }
 
                loaded = coord->node;
                result = zload(loaded);
-               if (unlikely(result))
+               if (unlikely(result)) {
+                       done_lh(hint->ext_coord.lh);
                        break;
+               }
 
                if (hint->ext_coord.valid == 0)
                        validate_extended_coord(&hint->ext_coord,
@@ -1725,13 +1729,15 @@ ssize_t read_unix_file(struct file *file
                        left = size - *off;
 
                /* faultin user page */
-               result = fault_in_pages_writeable(buf, left > PAGE_CACHE_SIZE ? 
PAGE_CACHE_SIZE : left);
-               if (result) {
+               if(fault_in_pages_writeable(buf, left > PAGE_CACHE_SIZE ? 
PAGE_CACHE_SIZE : left)) {
                        drop_nonexclusive_access(uf_info);
-                       return RETERR(-EFAULT);
+                       result = RETERR(-EFAULT);
+                       break;
                }
 
-               read = read_file(hint, file, buf, left, off);
+               read = read_file(hint, file, buf,
+                                left > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE : 
left,
+                                off);
 
                drop_nonexclusive_access(uf_info);
 
@@ -1748,6 +1754,7 @@ ssize_t read_unix_file(struct file *file
                count += read;
        }
        save_file_hint(file, hint);
+       done_lh(&hint->lh);
        kfree(hint);
 
        if (count) {
Index: linux-2.6.16/fs/reiser4/as_ops.c
===================================================================
--- linux-2.6.16.orig/fs/reiser4/as_ops.c
+++ linux-2.6.16/fs/reiser4/as_ops.c
@@ -350,6 +350,9 @@ int reiser4_releasepage(struct page *pag
        if (PageDirty(page))
                return 0;
 
+       if (page_count(page) > 3)
+               return 0;
+
        /* releasable() needs jnode lock, because it looks at the jnode fields
         * and we need jload_lock here to avoid races with jload(). */
        spin_lock_jnode(node);

> Reiser4progs: 1.0.5
>
> This machine is used for recording TV using a DVB card, compresses
> the files, and serves them via NFS and Samba.
>
> Until recently, the system ran kernel linux-2.6.11.6, and performed
> flawlessly for over a year. After upgrading the kernel, I upgraded
> reiser4progs, and fscked all reiser4 partitions. No errors were
> found.
>
> The system is run on a UPS, and does not have a history of memory or
> IO trouble.
> I am currently investigating why the samba shares have failed, and
> noticed this in the log.
>
> I believe problem/bug this is related to the kernel upgrade, rather
> than some random corruption because it seem too much of a coincidence
> to happen so soon after upgrading the kernel.
>
> Any help/advice is greatly appreciated.
>
> ...back to the samba investigation.
>
> Many Thanks,

-- 
Alex.

Reply via email to