[arch-commits] Commit in libatasmart/repos (8 files)

Jan de Groot jgc at nymeria.archlinux.org
Tue Jun 3 12:43:59 UTC 2014


    Date: Tuesday, June 3, 2014 @ 14:43:59
  Author: jgc
Revision: 214091

archrelease: copy trunk to extra-i686, extra-x86_64

Added:
  libatasmart/repos/extra-i686/0001-Dont-test-undefined-bits.patch
    (from rev 214090, libatasmart/trunk/0001-Dont-test-undefined-bits.patch)
  libatasmart/repos/extra-i686/0002-Drop-our-own-many-bad-sectors-heuristic.patch
    (from rev 214090, libatasmart/trunk/0002-Drop-our-own-many-bad-sectors-heuristic.patch)
  libatasmart/repos/extra-i686/PKGBUILD
    (from rev 214090, libatasmart/trunk/PKGBUILD)
  libatasmart/repos/extra-x86_64/0001-Dont-test-undefined-bits.patch
    (from rev 214090, libatasmart/trunk/0001-Dont-test-undefined-bits.patch)
  libatasmart/repos/extra-x86_64/0002-Drop-our-own-many-bad-sectors-heuristic.patch
    (from rev 214090, libatasmart/trunk/0002-Drop-our-own-many-bad-sectors-heuristic.patch)
  libatasmart/repos/extra-x86_64/PKGBUILD
    (from rev 214090, libatasmart/trunk/PKGBUILD)
Deleted:
  libatasmart/repos/extra-i686/PKGBUILD
  libatasmart/repos/extra-x86_64/PKGBUILD

-----------------------------------------------------------------+
 /PKGBUILD                                                       |   78 ++++++++
 extra-i686/0001-Dont-test-undefined-bits.patch                  |   28 +++
 extra-i686/0002-Drop-our-own-many-bad-sectors-heuristic.patch   |   93 ++++++++++
 extra-i686/PKGBUILD                                             |   28 ---
 extra-x86_64/0001-Dont-test-undefined-bits.patch                |   28 +++
 extra-x86_64/0002-Drop-our-own-many-bad-sectors-heuristic.patch |   93 ++++++++++
 extra-x86_64/PKGBUILD                                           |   28 ---
 7 files changed, 320 insertions(+), 56 deletions(-)

Copied: libatasmart/repos/extra-i686/0001-Dont-test-undefined-bits.patch (from rev 214090, libatasmart/trunk/0001-Dont-test-undefined-bits.patch)
===================================================================
--- extra-i686/0001-Dont-test-undefined-bits.patch	                        (rev 0)
+++ extra-i686/0001-Dont-test-undefined-bits.patch	2014-06-03 12:43:59 UTC (rev 214091)
@@ -0,0 +1,28 @@
+Author: Phillip Susi <psusi at ubuntu.com>
+Subject: fix an incorrect IO error reading SMART status
+Description: The read SMART status command's return status
+ was testing for a success/failure value that included 8
+ bits that are "N/A" according to the standard, and required
+ that they be zeros.  At least some drives do not fill them
+ with zeros, so correct this by masking off the undefined
+ bits.
+Bug: https://bugs.freedesktop.org/show_bug.cgi?id=61998
+Bug-Ubuntu: https://launchpad.net/bugs/1143495
+
+Index: b/atasmart.c
+===================================================================
+--- a/atasmart.c
++++ b/atasmart.c
+@@ -925,10 +925,10 @@
+         /* SAT/USB bridges truncate packets, so we only check for 4F,
+          * not for 2C on those */
+         if ((d->type == SK_DISK_TYPE_ATA_PASSTHROUGH_12 || cmd[3] == htons(0x00C2U)) &&
+-            cmd[4] == htons(0x4F00U))
++            (cmd[4] & htons(0xFF00U)) == htons(0x4F00U))
+                 *good = TRUE;
+         else if ((d->type == SK_DISK_TYPE_ATA_PASSTHROUGH_12 || cmd[3] == htons(0x002CU)) &&
+-                 cmd[4] == htons(0xF400U))
++                 (cmd[4] & htons(0xFF00U)) == htons(0xF400U))
+                 *good = FALSE;
+         else {
+                 errno = EIO;

Copied: libatasmart/repos/extra-i686/0002-Drop-our-own-many-bad-sectors-heuristic.patch (from rev 214090, libatasmart/trunk/0002-Drop-our-own-many-bad-sectors-heuristic.patch)
===================================================================
--- extra-i686/0002-Drop-our-own-many-bad-sectors-heuristic.patch	                        (rev 0)
+++ extra-i686/0002-Drop-our-own-many-bad-sectors-heuristic.patch	2014-06-03 12:43:59 UTC (rev 214091)
@@ -0,0 +1,93 @@
+From 6846b7c2431dbeaddd9f931c609b522c04e55732 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt at ubuntu.com>
+Date: Fri, 19 Mar 2010 14:56:06 +0100
+Subject: [PATCH 2/2] Drop our own "many bad sectors" heuristic
+
+This currently causes a lot of false positives, because in many cases our
+threshold is either overly pessimistically low, or the raw value is implausibly
+high. Just use the normalized values vs. threshold for now.
+
+Bug: https://bugs.freedesktop.org/show_bug.cgi?id=25772
+Bug-Ubuntu: https://launchpad.net/bugs/438136
+---
+ atasmart.c |   33 +++++++++++----------------------
+ 1 files changed, 11 insertions(+), 22 deletions(-)
+
+Index: libatasmart/atasmart.c
+===================================================================
+--- libatasmart.orig/atasmart.c	2012-05-23 08:34:14.007836753 +0200
++++ libatasmart/atasmart.c	2012-05-23 08:34:43.903835695 +0200
+@@ -130,6 +130,8 @@
+         SkBool current_pending_sector_found:1;
+         uint64_t reallocated_sector_count;
+         uint64_t current_pending_sector;
++        SkBool reallocated_sector_count_bad:1;
++        SkBool current_pending_sector_bad:1;
+ 
+         void *blob;
+ };
+@@ -2190,16 +2192,23 @@
+         if (a->pretty_unit != SK_SMART_ATTRIBUTE_UNIT_SECTORS)
+                 return;
+ 
++        if (!a->current_value_valid)
++                return;
++
+         if (!strcmp(a->name, "reallocated-sector-count")) {
+                 if (a->pretty_value > d->reallocated_sector_count)
+                         d->reallocated_sector_count = a->pretty_value;
+                 d->reallocated_sector_count_found = TRUE;
++                if (a->good_now_valid && !a->good_now)
++                        d->reallocated_sector_count_bad = TRUE;
+         }
+ 
+         if (!strcmp(a->name, "current-pending-sector")) {
+                 if (a->pretty_value > d->current_pending_sector)
+                         d->current_pending_sector = a->pretty_value;
+                 d->current_pending_sector_found = TRUE;
++                if (a->good_now_valid && !a->good_now)
++                        d->current_pending_sector_bad = TRUE;
+         }
+ }
+ 
+@@ -2255,24 +2264,9 @@
+         return _P(map[overall]);
+ }
+ 
+-static uint64_t u64log2(uint64_t n) {
+-        unsigned r;
+-
+-        if (n <= 1)
+-                return 0;
+-
+-        r = 0;
+-        for (;;) {
+-                n = n >> 1;
+-                if (!n)
+-                        return r;
+-                r++;
+-        }
+-}
+-
+ int sk_disk_smart_get_overall(SkDisk *d, SkSmartOverall *overall) {
+         SkBool good;
+-        uint64_t sectors, sector_threshold;
++        uint64_t sectors;
+ 
+         assert(d);
+         assert(overall);
+@@ -2293,13 +2287,7 @@
+                         return -1;
+                 sectors = 0;
+         } else {
+-
+-                /* We use log2(n_sectors)*1024 as a threshold here. We
+-                 * had to pick something, and this makes a bit of
+-                 * sense, or doesn't it? */
+-                sector_threshold = u64log2(d->size/512) * 1024;
+-
+-                if (sectors >= sector_threshold) {
++                if (d->reallocated_sector_count_bad || d->current_pending_sector_bad) {
+                         *overall = SK_SMART_OVERALL_BAD_SECTOR_MANY;
+                         return 0;
+                 }

Deleted: extra-i686/PKGBUILD
===================================================================
--- extra-i686/PKGBUILD	2014-06-03 12:43:51 UTC (rev 214090)
+++ extra-i686/PKGBUILD	2014-06-03 12:43:59 UTC (rev 214091)
@@ -1,28 +0,0 @@
-# $Id$
-# Maintainer: Jan de Groot <jgc at archlinux.org>
-
-pkgname=libatasmart
-pkgver=0.19
-pkgrel=2
-pkgdesc="ATA S.M.A.R.T. Reading and Parsing Library"
-arch=('i686' 'x86_64')
-license=('LGPL')
-depends=('udev')
-url="http://0pointer.de/blog/projects/being-smart.html"
-source=("http://0pointer.de/public/${pkgname}-${pkgver}.tar.xz")
-md5sums=('53afe2b155c36f658e121fe6def33e77')
-
-build() {
-  cd "${srcdir}/${pkgname}-${pkgver}"
-  ./configure --prefix=/usr \
-    --sysconfdir=/etc \
-    --localstatedir=/var \
-    --sbindir=/usr/bin \
-    --disable-static
-  make
-}
-
-package() {
-  cd "${srcdir}/${pkgname}-${pkgver}"
-  make DESTDIR="${pkgdir}" install
-}

Copied: libatasmart/repos/extra-i686/PKGBUILD (from rev 214090, libatasmart/trunk/PKGBUILD)
===================================================================
--- extra-i686/PKGBUILD	                        (rev 0)
+++ extra-i686/PKGBUILD	2014-06-03 12:43:59 UTC (rev 214091)
@@ -0,0 +1,39 @@
+# $Id$
+# Maintainer: Jan de Groot <jgc at archlinux.org>
+
+pkgname=libatasmart
+pkgver=0.19
+pkgrel=3
+pkgdesc="ATA S.M.A.R.T. Reading and Parsing Library"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('libsystemd')
+makedepends=('systemd')
+url="http://0pointer.de/blog/projects/being-smart.html"
+source=(http://0pointer.de/public/${pkgname}-${pkgver}.tar.xz
+        0001-Dont-test-undefined-bits.patch
+        0002-Drop-our-own-many-bad-sectors-heuristic.patch)
+md5sums=('53afe2b155c36f658e121fe6def33e77'
+         'eb5d0468b0d47d099e5164372a21f9da'
+         'cebd1fbed0b05d0458177d6d3ad4ea3f')
+
+prepare() {
+  cd $pkgname-$pkgver
+  patch -Np1 -i ../0001-Dont-test-undefined-bits.patch
+  patch -Np1 -i ../0002-Drop-our-own-many-bad-sectors-heuristic.patch
+}
+
+build() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  ./configure --prefix=/usr \
+    --sysconfdir=/etc \
+    --localstatedir=/var \
+    --sbindir=/usr/bin \
+    --disable-static
+  make
+}
+
+package() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}

Copied: libatasmart/repos/extra-x86_64/0001-Dont-test-undefined-bits.patch (from rev 214090, libatasmart/trunk/0001-Dont-test-undefined-bits.patch)
===================================================================
--- extra-x86_64/0001-Dont-test-undefined-bits.patch	                        (rev 0)
+++ extra-x86_64/0001-Dont-test-undefined-bits.patch	2014-06-03 12:43:59 UTC (rev 214091)
@@ -0,0 +1,28 @@
+Author: Phillip Susi <psusi at ubuntu.com>
+Subject: fix an incorrect IO error reading SMART status
+Description: The read SMART status command's return status
+ was testing for a success/failure value that included 8
+ bits that are "N/A" according to the standard, and required
+ that they be zeros.  At least some drives do not fill them
+ with zeros, so correct this by masking off the undefined
+ bits.
+Bug: https://bugs.freedesktop.org/show_bug.cgi?id=61998
+Bug-Ubuntu: https://launchpad.net/bugs/1143495
+
+Index: b/atasmart.c
+===================================================================
+--- a/atasmart.c
++++ b/atasmart.c
+@@ -925,10 +925,10 @@
+         /* SAT/USB bridges truncate packets, so we only check for 4F,
+          * not for 2C on those */
+         if ((d->type == SK_DISK_TYPE_ATA_PASSTHROUGH_12 || cmd[3] == htons(0x00C2U)) &&
+-            cmd[4] == htons(0x4F00U))
++            (cmd[4] & htons(0xFF00U)) == htons(0x4F00U))
+                 *good = TRUE;
+         else if ((d->type == SK_DISK_TYPE_ATA_PASSTHROUGH_12 || cmd[3] == htons(0x002CU)) &&
+-                 cmd[4] == htons(0xF400U))
++                 (cmd[4] & htons(0xFF00U)) == htons(0xF400U))
+                 *good = FALSE;
+         else {
+                 errno = EIO;

Copied: libatasmart/repos/extra-x86_64/0002-Drop-our-own-many-bad-sectors-heuristic.patch (from rev 214090, libatasmart/trunk/0002-Drop-our-own-many-bad-sectors-heuristic.patch)
===================================================================
--- extra-x86_64/0002-Drop-our-own-many-bad-sectors-heuristic.patch	                        (rev 0)
+++ extra-x86_64/0002-Drop-our-own-many-bad-sectors-heuristic.patch	2014-06-03 12:43:59 UTC (rev 214091)
@@ -0,0 +1,93 @@
+From 6846b7c2431dbeaddd9f931c609b522c04e55732 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt at ubuntu.com>
+Date: Fri, 19 Mar 2010 14:56:06 +0100
+Subject: [PATCH 2/2] Drop our own "many bad sectors" heuristic
+
+This currently causes a lot of false positives, because in many cases our
+threshold is either overly pessimistically low, or the raw value is implausibly
+high. Just use the normalized values vs. threshold for now.
+
+Bug: https://bugs.freedesktop.org/show_bug.cgi?id=25772
+Bug-Ubuntu: https://launchpad.net/bugs/438136
+---
+ atasmart.c |   33 +++++++++++----------------------
+ 1 files changed, 11 insertions(+), 22 deletions(-)
+
+Index: libatasmart/atasmart.c
+===================================================================
+--- libatasmart.orig/atasmart.c	2012-05-23 08:34:14.007836753 +0200
++++ libatasmart/atasmart.c	2012-05-23 08:34:43.903835695 +0200
+@@ -130,6 +130,8 @@
+         SkBool current_pending_sector_found:1;
+         uint64_t reallocated_sector_count;
+         uint64_t current_pending_sector;
++        SkBool reallocated_sector_count_bad:1;
++        SkBool current_pending_sector_bad:1;
+ 
+         void *blob;
+ };
+@@ -2190,16 +2192,23 @@
+         if (a->pretty_unit != SK_SMART_ATTRIBUTE_UNIT_SECTORS)
+                 return;
+ 
++        if (!a->current_value_valid)
++                return;
++
+         if (!strcmp(a->name, "reallocated-sector-count")) {
+                 if (a->pretty_value > d->reallocated_sector_count)
+                         d->reallocated_sector_count = a->pretty_value;
+                 d->reallocated_sector_count_found = TRUE;
++                if (a->good_now_valid && !a->good_now)
++                        d->reallocated_sector_count_bad = TRUE;
+         }
+ 
+         if (!strcmp(a->name, "current-pending-sector")) {
+                 if (a->pretty_value > d->current_pending_sector)
+                         d->current_pending_sector = a->pretty_value;
+                 d->current_pending_sector_found = TRUE;
++                if (a->good_now_valid && !a->good_now)
++                        d->current_pending_sector_bad = TRUE;
+         }
+ }
+ 
+@@ -2255,24 +2264,9 @@
+         return _P(map[overall]);
+ }
+ 
+-static uint64_t u64log2(uint64_t n) {
+-        unsigned r;
+-
+-        if (n <= 1)
+-                return 0;
+-
+-        r = 0;
+-        for (;;) {
+-                n = n >> 1;
+-                if (!n)
+-                        return r;
+-                r++;
+-        }
+-}
+-
+ int sk_disk_smart_get_overall(SkDisk *d, SkSmartOverall *overall) {
+         SkBool good;
+-        uint64_t sectors, sector_threshold;
++        uint64_t sectors;
+ 
+         assert(d);
+         assert(overall);
+@@ -2293,13 +2287,7 @@
+                         return -1;
+                 sectors = 0;
+         } else {
+-
+-                /* We use log2(n_sectors)*1024 as a threshold here. We
+-                 * had to pick something, and this makes a bit of
+-                 * sense, or doesn't it? */
+-                sector_threshold = u64log2(d->size/512) * 1024;
+-
+-                if (sectors >= sector_threshold) {
++                if (d->reallocated_sector_count_bad || d->current_pending_sector_bad) {
+                         *overall = SK_SMART_OVERALL_BAD_SECTOR_MANY;
+                         return 0;
+                 }

Deleted: extra-x86_64/PKGBUILD
===================================================================
--- extra-x86_64/PKGBUILD	2014-06-03 12:43:51 UTC (rev 214090)
+++ extra-x86_64/PKGBUILD	2014-06-03 12:43:59 UTC (rev 214091)
@@ -1,28 +0,0 @@
-# $Id$
-# Maintainer: Jan de Groot <jgc at archlinux.org>
-
-pkgname=libatasmart
-pkgver=0.19
-pkgrel=2
-pkgdesc="ATA S.M.A.R.T. Reading and Parsing Library"
-arch=('i686' 'x86_64')
-license=('LGPL')
-depends=('udev')
-url="http://0pointer.de/blog/projects/being-smart.html"
-source=("http://0pointer.de/public/${pkgname}-${pkgver}.tar.xz")
-md5sums=('53afe2b155c36f658e121fe6def33e77')
-
-build() {
-  cd "${srcdir}/${pkgname}-${pkgver}"
-  ./configure --prefix=/usr \
-    --sysconfdir=/etc \
-    --localstatedir=/var \
-    --sbindir=/usr/bin \
-    --disable-static
-  make
-}
-
-package() {
-  cd "${srcdir}/${pkgname}-${pkgver}"
-  make DESTDIR="${pkgdir}" install
-}

Copied: libatasmart/repos/extra-x86_64/PKGBUILD (from rev 214090, libatasmart/trunk/PKGBUILD)
===================================================================
--- extra-x86_64/PKGBUILD	                        (rev 0)
+++ extra-x86_64/PKGBUILD	2014-06-03 12:43:59 UTC (rev 214091)
@@ -0,0 +1,39 @@
+# $Id$
+# Maintainer: Jan de Groot <jgc at archlinux.org>
+
+pkgname=libatasmart
+pkgver=0.19
+pkgrel=3
+pkgdesc="ATA S.M.A.R.T. Reading and Parsing Library"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('libsystemd')
+makedepends=('systemd')
+url="http://0pointer.de/blog/projects/being-smart.html"
+source=(http://0pointer.de/public/${pkgname}-${pkgver}.tar.xz
+        0001-Dont-test-undefined-bits.patch
+        0002-Drop-our-own-many-bad-sectors-heuristic.patch)
+md5sums=('53afe2b155c36f658e121fe6def33e77'
+         'eb5d0468b0d47d099e5164372a21f9da'
+         'cebd1fbed0b05d0458177d6d3ad4ea3f')
+
+prepare() {
+  cd $pkgname-$pkgver
+  patch -Np1 -i ../0001-Dont-test-undefined-bits.patch
+  patch -Np1 -i ../0002-Drop-our-own-many-bad-sectors-heuristic.patch
+}
+
+build() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  ./configure --prefix=/usr \
+    --sysconfdir=/etc \
+    --localstatedir=/var \
+    --sbindir=/usr/bin \
+    --disable-static
+  make
+}
+
+package() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  make DESTDIR="${pkgdir}" install
+}




More information about the arch-commits mailing list