Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=d94ff9863a9631da4afa9ebfa6388b1cdb1e9df8

commit d94ff9863a9631da4afa9ebfa6388b1cdb1e9df8
Author: DeX77 <[email protected]>
Date:   Wed May 8 17:01:53 2013 +0200

reiser4progs-1.0.8-1-x86_64

* version bump

diff --git a/source/apps-extra/reiser4progs/FrugalBuild 
b/source/apps-extra/reiser4progs/FrugalBuild
index 39b24e3..bc96faa 100644
--- a/source/apps-extra/reiser4progs/FrugalBuild
+++ b/source/apps-extra/reiser4progs/FrugalBuild
@@ -1,10 +1,10 @@
-# Compiling time: 1.26 SBU
+# Compiling time: 1.61 SBU
# Maintainer: crazy <[email protected]>
# Contributor: Laszlo Dvornik <[email protected]>

pkgname=reiser4progs
-pkgver=1.0.7
-pkgrel=2
+pkgver=1.0.8
+pkgrel=1
pkgdesc="Utilities for Reiser4 filesystems"
url="http://www.namesys.com/";
depends=('e2fsprogs' 'readline' 'libaal=1.0.5-4'  'libuuid')
@@ -13,8 +13,6 @@ archs=('i686' 'x86_64')
_F_sourceforge_dirname="reiser4"
_F_sourceforge_subdir="reiser4-utils/"
Finclude sourceforge
-source=($source reiser4progs-fsck-handle-unprepped-cluster.patch)
-sha1sums=('535623c974faff082c9c55032f87b5a1c7107e6e' \
-          '61239ba03af7bc4b3e88d8a16b603ebdb1ce5412')
+sha1sums=('54fddb8a9a412fe864bdf00f8e62b343fbf0da81')

# optimization OK
diff --git 
a/source/apps-extra/reiser4progs/reiser4progs-fsck-handle-unprepped-cluster.patch
 
b/source/apps-extra/reiser4progs/reiser4progs-fsck-handle-unprepped-cluster.patch
deleted file mode 100644
index f7b4bbb..0000000
--- 
a/source/apps-extra/reiser4progs/reiser4progs-fsck-handle-unprepped-cluster.patch
+++ /dev/null
@@ -1,370 +0,0 @@
-. Handle orphan "unprepped" clusters;
-. Don't repair the value of cluster shift in ctail item
-  in all circumstances. If cluster shift is wrong, then
-  remove the whole cluster.
-
-Signed-off-by: Edward Shishkin <[email protected]>
----
- plugin/object/ccreg40/ccreg40.c        |   12 +-
- plugin/object/ccreg40/ccreg40.h        |    9 +
- plugin/object/ccreg40/ccreg40_repair.c |  196 
+++++++++++++++++----------------
- 3 files changed, 121 insertions(+), 96 deletions(-)
-
---- reiser4progs-1.0.7.orig/plugin/object/ccreg40/ccreg40.h
-+++ reiser4progs-1.0.7/plugin/object/ccreg40/ccreg40.h
-@@ -11,6 +11,12 @@
- #include "reiser4/plugin.h"
- #include "plugin/object/obj40/obj40.h"
-
-+#define MIN_VALID_CLUSTER_SHIFT (0xc)
-+#define MAX_VALID_CLUSTER_SHIFT (0x10)
-+#define UNPREPPED_CLUSTER_SHIFT (0xff)
-+
-+#define ccreg40_cloff(off, size) ((off) & ((size) - 1))
-+
- #define ccreg40_clstart(off, size) ((off) & ~((size) - 1))
-
- #define ccreg40_clnext(off, size) (ccreg40_clstart(off, size) + (size))
-@@ -22,7 +28,8 @@ extern errno_t ccreg40_check_struct(reis
-                                   place_func_t func,
-                                   void *data, uint8_t mode);
-
--extern uint32_t ccreg40_get_cluster_size(reiser4_place_t *place);
-+extern errno_t ccreg40_get_cluster_shift(reiser4_place_t *place,
-+                                       uint8_t *shift);
-
- extern errno_t ccreg40_set_cluster_size(reiser4_place_t *place,
-                                       uint32_t cluster);
---- reiser4progs-1.0.7.orig/plugin/object/ccreg40/ccreg40_repair.c
-+++ reiser4progs-1.0.7/plugin/object/ccreg40/ccreg40_repair.c
-@@ -25,80 +25,81 @@ typedef struct ccreg40_hint {
-       uint64_t seek;       /* expected offset for lookup */
-       uint64_t found;      /* what has been really found */
-       uint64_t maxreal;    /* maximal (key) offset in the found item */
--
--      /* Bytes all clusters takes on disk. */
--      uint32_t bytes;
-       uint64_t sdsize;
-+      /* The following two fields are to delete wrecks of a disk cluster */
-+      uint64_t cut_from;   /* offset to cut from */
-+      uint32_t cut_size;   /* how many bytes to cut */
-+      uint32_t clsize;
-+      /* Total number of units in a disk cluster */
-+      uint32_t bytes;
-       uint32_t adler;
-       uint8_t mode;
--
--      /* If a hole is detected. */
-+      /* Indicates if cluster has a hole in key space */
-       uint8_t hole;
--
-       /* The cluster size & the buffer for the data. */
-       uint8_t data[64 * 1024];
--      uint64_t clstart;
--      uint32_t clsize;
- } ccreg40_hint_t;
-
- static errno_t ccreg40_check_item(reiser4_object_t *cc, void *data) {
-       ccreg40_hint_t *hint = (ccreg40_hint_t *)data;
--      uint32_t clsize;
--      errno_t res = 0;
--
-+      uint8_t shift;
-+      errno_t result;
-+
-       hint->found = objcall(&cc->body.key, get_offset);
-       hint->maxreal = obj40_place_maxreal(&cc->body);
-
-       aal_assert("vpf-1871", hint->maxreal >= hint->found);
-       aal_assert("vpf-1872", hint->seek <= hint->found);
-
--      /* Check the item plugin. */
-+      /* check item plugin */
-       if (cc->body.plug != reiser4_psctail(cc)) {
--              fsck_mess("The file [%s] (%s), node [%llu], item "
--                        "[%u]: item of the illegal plugin (%s) "
--                        "with the key of this object found.%s",
--                        print_inode(obj40_core, &cc->info.object),
--                        reiser4_psobj(cc)->p.label, place_blknr(&cc->body),
--                        cc->body.pos.item, cc->body.plug->p.label,
--                        hint->mode == RM_BUILD ? " Removed." : "");
--
--              return hint->mode == RM_BUILD ? -ESTRUCT : RE_FATAL;
-+              fsck_mess("Found item of illegal plugin (%s) "
-+                        "with the key of this object ",
-+                        cc->body.plug->p.label);
-+              goto fatal;
-       }
--
--      /* Check the shift. */
--      clsize = ccreg40_get_cluster_size(&cc->body);
--
--      if (hint->clsize != clsize) {
--              fsck_mess("The file [%s] (%s), node [%llu], item [%u]: item "
--                        "of the wrong cluster size (%d) found, Should be "
--                        "(%d).%s", print_inode(obj40_core, &cc->info.object),
--                        reiser4_psobj(cc)->p.label, place_blknr(&cc->body),
--                        cc->body.pos.item, clsize, hint->clsize,
--                        hint->mode != RM_CHECK ? " Fixed." : "");
--
--              /* Just fix the shift if wrong. */
--              if (hint->mode == RM_CHECK) {
--                      res |= RE_FIXABLE;
--              } else {
--                      ccreg40_set_cluster_size(&cc->body, hint->clsize);
--              }
-+      /* check cluster shift. */
-+      result = ccreg40_get_cluster_shift(&cc->body, &shift);
-+      if (result < 0)
-+              return result;
-+      if (shift == UNPREPPED_CLUSTER_SHIFT) {
-+              fsck_mess("Found unprepped disk cluster ");
-+              goto fatal;
-+      }
-+      if (shift < MIN_VALID_CLUSTER_SHIFT ||
-+          shift > MAX_VALID_CLUSTER_SHIFT ||
-+          shift != aal_log2(hint->clsize)) {
-+              fsck_mess("Found item with wrong cluster shift %d, "
-+                        "should be %d", shift, aal_log2(hint->clsize));
-+              goto fatal;
-+      }
-+      if (hint->seek &&
-+          !ccreg40_clsame(hint->prev_found, hint->found, hint->clsize) &&
-+          ccreg40_cloff(hint->found, hint->clsize) != 0){
-+              fsck_mess("Found item of lenght (%llu) which has wrong "
-+                        "offset %llu, should be a multiple of logical "
-+                        "cluster size ",
-+                        hint->maxreal - hint->found + 1, hint->found);
-+              goto fatal;
-       }
--
-       if (!ccreg40_clsame(hint->found, hint->maxreal, hint->clsize)) {
--              /* The item covers the cluster border. Delete it. */
--              fsck_mess("The file [%s] (%s), node [%llu], item [%u]: "
--                        "item of the lenght (%llu) found, it cannot "
--                        "contain data of 2 clusters.%s",
--                        print_inode(obj40_core, &cc->info.object),
--                        reiser4_psobj(cc)->p.label,
--                        place_blknr(&cc->body), cc->body.pos.item,
--                        hint->maxreal - hint->found + 1,
--                        hint->mode == RM_BUILD ? " Removed." : "");
--
--              return hint->mode == RM_BUILD ? -ESTRUCT : RE_FATAL;
-+              fsck_mess("Found item of length %llu and offset %llu, "
-+                        "which contains logical cluster boundary ",
-+                        hint->maxreal - hint->found + 1, hint->found);
-+              goto fatal;
-       }
--
--      return res;
-+      return 0;
-+ fatal:
-+      fsck_mess("(file [%s] (%s), node [%llu], item [%u]). %s",
-+                print_inode(obj40_core, &cc->info.object),
-+                reiser4_psobj(cc)->p.label,
-+                place_blknr(&cc->body),
-+                cc->body.pos.item,
-+                hint->mode == RM_BUILD ? " Removed." : "");
-+      hint->cut_from = hint->found;
-+      hint->cut_size = hint->maxreal - hint->found + 1;
-+
-+      return hint->mode == RM_BUILD ? -ESTRUCT : RE_FATAL;
- }
-
- static int64_t ccreg40_read_item(reiser4_place_t *place, ccreg40_hint_t 
*hint) {
-@@ -133,23 +134,21 @@ static errno_t ccreg40_check_crc(ccreg40
-       return adler == disk ? 0 : RE_FATAL;
- }
-
-+/*
-+ * Read a found item to the stream.
-+ * Check a checksum, if the previous iteration completed a disk cluster.
-+ */
- static errno_t ccreg40_check_cluster(reiser4_object_t *cc,
-                                    ccreg40_hint_t *hint,
-                                    uint8_t mode)
- {
--      errno_t result;
-+      errno_t result = 0;
-       errno_t res;
--      int start;
--      uint32_t lcl_size;
--
--      result = 0;
--      /* true, if the found item is the
--         first one in the disk cluster */
--      start = (ccreg40_clstart(hint->found, hint->clsize) == hint->found);
-+      uint32_t lcl_bytes;
-
-       if ((cc->body.plug == NULL) ||
--          (hint->seek && start) ||
--          !ccreg40_clsame(hint->prev_found, hint->found, hint->clsize)) {
-+          (hint->seek != 0 &&
-+           !ccreg40_clsame(hint->prev_found, hint->found, hint->clsize))) {
-               /* Cluster is over */
-
-               if (hint->prev_found > hint->sdsize) {
-@@ -158,31 +157,32 @@ static errno_t ccreg40_check_cluster(rei
-                       result = RE_FATAL;
-
-                       /* set offset of the cluster to be deleted. */
--                      hint->clstart = ccreg40_clstart(hint->prev_found,
--                                                      hint->clsize);
-+                      hint->cut_from = ccreg40_clstart(hint->prev_found,
-+                                                       hint->clsize);
-                       fsck_mess("The file [%s] (%s): the cluster at [%llu] "
-                                 "offset %u bytes long is orphan.%s",
-                                 print_inode(obj40_core, &cc->info.object),
--                                reiser4_psobj(cc)->p.label, hint->clstart,
-+                                reiser4_psobj(cc)->p.label, hint->cut_from,
-                                 hint->clsize, hint->mode != RM_CHECK ?
-                                 " Removed." : "");
-               }
-               /**
--               * If there still is a hole in the logical cluster,
--               * then check a checksum (no hole means no checksum)
-+               * If there still is a hole in the keyspace, then
-+               * check a checksum (no such hole means that no
-+               * checksum was appended)
-                */
--              else if (hint->hole && ccreg40_check_crc(hint)) {
-+              else if (hint->bytes && hint->hole && ccreg40_check_crc(hint)) {
-                       /* wrong checksum */
-                       hint->bytes = 0;
-                       result = RE_FATAL;
-
-                       /* set offset of the cluster to be deleted. */
--                      hint->clstart = ccreg40_clstart(hint->prev_found,
--                                                      hint->clsize);
-+                      hint->cut_from = ccreg40_clstart(hint->prev_found,
-+                                                       hint->clsize);
-                       fsck_mess("The file [%s] (%s): the cluster at [%llu] "
-                                 "offset %u bytes long is corrupted.%s",
-                                 print_inode(obj40_core, &cc->info.object),
--                                reiser4_psobj(cc)->p.label, hint->clstart,
-+                                reiser4_psobj(cc)->p.label, hint->cut_from,
-                                 hint->clsize, hint->mode != RM_CHECK ?
-                                 " Removed." : "");
-               }
-@@ -192,16 +192,13 @@ static errno_t ccreg40_check_cluster(rei
-               hint->adler = 0;
-
-               if (!cc->body.plug)
-+                      /* finish with this object */
-                       return result;
-
-               /* Update the cluster data. */
-               aal_memset(hint->data, 0, hint->clsize);
-       }
--
-       /* An item found. */
--      aal_assert("edward-1",
--                 ccreg40_clstart(hint->found, hint->clsize) ==
--                 ccreg40_clstart(hint->maxreal, hint->clsize));
-
-       if ((res = ccreg40_read_item(&cc->body, hint)))
-               return res;
-@@ -209,16 +206,19 @@ static errno_t ccreg40_check_cluster(rei
-       hint->prev_found = hint->found;
-       hint->bytes += objcall(&cc->body, object->bytes);
-       /**
--       * Calculate a size of logical cluster
--       * and figure out, if there is a hole
--       * for the found items in the logical cluster.
-+       * Calculate actual number of file's bytes in the
-+       * logical cluster and figure out, if corresponding
-+       * disk cluster has a hole in key space.
-+       *
-+       * We need this to figure out if disk cluster contains
-+       * appended checksum.
-        */
--      lcl_size = 0;
-+      lcl_bytes = 0;
-       if (ccreg40_clsame(hint->found, hint->sdsize - 1, hint->clsize))
--              lcl_size = hint->sdsize % hint->clsize;
--      if (lcl_size == 0)
--              lcl_size = hint->clsize;
--      hint->hole = (hint->bytes != lcl_size);
-+              lcl_bytes = hint->sdsize % hint->clsize;
-+      if (lcl_bytes == 0)
-+              lcl_bytes = hint->clsize;
-+      hint->hole = (hint->bytes != lcl_bytes);
-
-       return result;
- }
-@@ -256,8 +256,23 @@ errno_t ccreg40_check_struct(reiser4_obj
-               /* Get next item. */
-               lookup = obj40_check_item(cc, ccreg40_check_item, NULL, &hint);
-
--              if (repair_error_fatal(lookup))
--                      return lookup;
-+              if (repair_error_fatal(lookup)) {
-+                          if ((lookup & RE_FATAL) && mode == RM_BUILD) {
-+                                  /*
-+                                   * Delete item found in this iteration
-+                                   */
-+                                  res &= ~RE_FATAL;
-+                                  res |= obj40_cut(cc, &trans, hint.cut_from,
-+                                                   hint.cut_size, NULL, NULL);
-+                                  if (res < 0)
-+                                          return res;
-+                                  hint.seek = hint.maxreal + 1;
-+                                  obj40_seek(cc, hint.seek);
-+                                  continue;
-+                          }
-+                          else
-+                                  return lookup;
-+              }
-               else if (lookup == ABSENT)
-                       cc->body.plug = NULL;
-
-@@ -267,16 +282,17 @@ errno_t ccreg40_check_struct(reiser4_obj
-                               "registered yet.", print_key(obj40_core,
-                                                            &info->object));
-               }
--
-+              /* check cluster found in previous iteration */
-               if ((res |= ccreg40_check_cluster(cc, &hint, mode)) < 0)
-                       return res;
-
-               if (res & RE_FATAL) {
--                      /* Delete the whole cluster. */
--
-+                      /*
-+                       * Delete cluster found in previous iteration
-+                       */
-                       if (mode == RM_BUILD) {
-                               res &= ~RE_FATAL;
--                              res |= obj40_cut(cc, &trans, hint.clstart,
-+                              res |= obj40_cut(cc, &trans, hint.cut_from,
-                                                hint.clsize, NULL, NULL);
-                               if (res < 0)
-                                       return res;
---- reiser4progs-1.0.7.orig/plugin/object/ccreg40/ccreg40.c
-+++ reiser4progs-1.0.7/plugin/object/ccreg40/ccreg40.c
-@@ -8,7 +8,7 @@
- #include "ccreg40.h"
- #include "plugin/object/obj40/obj40_repair.h"
-
--uint32_t ccreg40_get_cluster_size(reiser4_place_t *place) {
-+errno_t ccreg40_get_cluster_shift(reiser4_place_t *place, uint8_t *shift) {
-       trans_hint_t hint;
-       ctail_hint_t chint;
-
-@@ -17,10 +17,12 @@ uint32_t ccreg40_get_cluster_size(reiser
-       hint.specific = &chint;
-       hint.count = 1;
-
--      if (objcall(place, object->fetch_units, &hint) != 1)
--              return MAX_UINT32;
--
--      return 1 << chint.shift;
-+      if (objcall(place, object->fetch_units, &hint) != 1) {
-+              aal_error("Can not extract cluster shift.");
-+              return -EINVAL;
-+      }
-+      *shift = chint.shift;
-+      return 0;
- }
-
- errno_t ccreg40_set_cluster_size(reiser4_place_t *place, uint32_t cluster) {
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to