Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] dm: remove SECTOR_FORMAT

We don't know what type sector_t has. Sometimes it's unsigned long, sometimes
it's unsigned long long. For example on ppc64 it's unsigned long with
CONFIG_LBD=n and on x86_64 it's unsigned long long with CONFIG_LBD=n.

The way to handle all of this is to always use unsigned long long and to
always typecast the sector_t when printing it.

Acked-by: Alasdair G Kergon <agk@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Andrew Morton and committed by
Linus Torvalds
4ee218cd 930d332a

+32 -34
+7 -4
drivers/md/dm-crypt.c
··· 518 518 char *ivopts; 519 519 unsigned int crypto_flags; 520 520 unsigned int key_size; 521 + unsigned long long tmpll; 521 522 522 523 if (argc != 5) { 523 524 ti->error = PFX "Not enough arguments"; ··· 634 633 goto bad5; 635 634 } 636 635 637 - if (sscanf(argv[2], SECTOR_FORMAT, &cc->iv_offset) != 1) { 636 + if (sscanf(argv[2], "%llu", &tmpll) != 1) { 638 637 ti->error = PFX "Invalid iv_offset sector"; 639 638 goto bad5; 640 639 } 640 + cc->iv_offset = tmpll; 641 641 642 - if (sscanf(argv[4], SECTOR_FORMAT, &cc->start) != 1) { 642 + if (sscanf(argv[4], "%llu", &tmpll) != 1) { 643 643 ti->error = PFX "Invalid device sector"; 644 644 goto bad5; 645 645 } 646 + cc->start = tmpll; 646 647 647 648 if (dm_get_device(ti, argv[3], cc->start, ti->len, 648 649 dm_table_get_mode(ti->table), &cc->dev)) { ··· 888 885 result[sz++] = '-'; 889 886 } 890 887 891 - DMEMIT(" " SECTOR_FORMAT " %s " SECTOR_FORMAT, 892 - cc->iv_offset, cc->dev->name, cc->start); 888 + DMEMIT(" %llu %s %llu", (unsigned long long)cc->iv_offset, 889 + cc->dev->name, (unsigned long long)cc->start); 893 890 break; 894 891 } 895 892 return 0;
+5 -3
drivers/md/dm-linear.c
··· 26 26 static int linear_ctr(struct dm_target *ti, unsigned int argc, char **argv) 27 27 { 28 28 struct linear_c *lc; 29 + unsigned long long tmp; 29 30 30 31 if (argc != 2) { 31 32 ti->error = "dm-linear: Invalid argument count"; ··· 39 38 return -ENOMEM; 40 39 } 41 40 42 - if (sscanf(argv[1], SECTOR_FORMAT, &lc->start) != 1) { 41 + if (sscanf(argv[1], "%llu", &tmp) != 1) { 43 42 ti->error = "dm-linear: Invalid device sector"; 44 43 goto bad; 45 44 } 45 + lc->start = tmp; 46 46 47 47 if (dm_get_device(ti, argv[0], lc->start, ti->len, 48 48 dm_table_get_mode(ti->table), &lc->dev)) { ··· 89 87 break; 90 88 91 89 case STATUSTYPE_TABLE: 92 - snprintf(result, maxlen, "%s " SECTOR_FORMAT, lc->dev->name, 93 - lc->start); 90 + snprintf(result, maxlen, "%s %llu", lc->dev->name, 91 + (unsigned long long)lc->start); 94 92 break; 95 93 } 96 94 return 0;
+8 -7
drivers/md/dm-raid1.c
··· 934 934 static int get_mirror(struct mirror_set *ms, struct dm_target *ti, 935 935 unsigned int mirror, char **argv) 936 936 { 937 - sector_t offset; 937 + unsigned long long offset; 938 938 939 - if (sscanf(argv[1], SECTOR_FORMAT, &offset) != 1) { 939 + if (sscanf(argv[1], "%llu", &offset) != 1) { 940 940 ti->error = "dm-mirror: Invalid offset"; 941 941 return -EINVAL; 942 942 } ··· 1203 1203 for (m = 0; m < ms->nr_mirrors; m++) 1204 1204 DMEMIT("%s ", ms->mirror[m].dev->name); 1205 1205 1206 - DMEMIT(SECTOR_FORMAT "/" SECTOR_FORMAT, 1207 - ms->rh.log->type->get_sync_count(ms->rh.log), 1208 - ms->nr_regions); 1206 + DMEMIT("%llu/%llu", 1207 + (unsigned long long)ms->rh.log->type-> 1208 + get_sync_count(ms->rh.log), 1209 + (unsigned long long)ms->nr_regions); 1209 1210 break; 1210 1211 1211 1212 case STATUSTYPE_TABLE: 1212 1213 DMEMIT("%d ", ms->nr_mirrors); 1213 1214 for (m = 0; m < ms->nr_mirrors; m++) 1214 - DMEMIT("%s " SECTOR_FORMAT " ", 1215 - ms->mirror[m].dev->name, ms->mirror[m].offset); 1215 + DMEMIT("%s %llu ", ms->mirror[m].dev->name, 1216 + (unsigned long long)ms->mirror[m].offset); 1216 1217 } 1217 1218 1218 1219 return 0;
+6 -5
drivers/md/dm-snap.c
··· 959 959 snap->store.fraction_full(&snap->store, 960 960 &numerator, 961 961 &denominator); 962 - snprintf(result, maxlen, 963 - SECTOR_FORMAT "/" SECTOR_FORMAT, 964 - numerator, denominator); 962 + snprintf(result, maxlen, "%llu/%llu", 963 + (unsigned long long)numerator, 964 + (unsigned long long)denominator); 965 965 } 966 966 else 967 967 snprintf(result, maxlen, "Unknown"); ··· 974 974 * to make private copies if the output is to 975 975 * make sense. 976 976 */ 977 - snprintf(result, maxlen, "%s %s %c " SECTOR_FORMAT, 977 + snprintf(result, maxlen, "%s %s %c %llu", 978 978 snap->origin->name, snap->cow->name, 979 - snap->type, snap->chunk_size); 979 + snap->type, 980 + (unsigned long long)snap->chunk_size); 980 981 break; 981 982 } 982 983
+6 -5
drivers/md/dm-stripe.c
··· 49 49 static int get_stripe(struct dm_target *ti, struct stripe_c *sc, 50 50 unsigned int stripe, char **argv) 51 51 { 52 - sector_t start; 52 + unsigned long long start; 53 53 54 - if (sscanf(argv[1], SECTOR_FORMAT, &start) != 1) 54 + if (sscanf(argv[1], "%llu", &start) != 1) 55 55 return -EINVAL; 56 56 57 57 if (dm_get_device(ti, argv[0], start, sc->stripe_width, ··· 201 201 break; 202 202 203 203 case STATUSTYPE_TABLE: 204 - DMEMIT("%d " SECTOR_FORMAT, sc->stripes, sc->chunk_mask + 1); 204 + DMEMIT("%d %llu", sc->stripes, 205 + (unsigned long long)sc->chunk_mask + 1); 205 206 for (i = 0; i < sc->stripes; i++) 206 - DMEMIT(" %s " SECTOR_FORMAT, sc->stripe[i].dev->name, 207 - sc->stripe[i].physical_start); 207 + DMEMIT(" %s %llu", sc->stripe[i].dev->name, 208 + (unsigned long long)sc->stripe[i].physical_start); 208 209 break; 209 210 } 210 211 return 0;
-10
drivers/md/dm.h
··· 23 23 #define DMEMIT(x...) sz += ((sz >= maxlen) ? \ 24 24 0 : scnprintf(result + sz, maxlen - sz, x)) 25 25 26 - /* 27 - * FIXME: I think this should be with the definition of sector_t 28 - * in types.h. 29 - */ 30 - #ifdef CONFIG_LBD 31 - #define SECTOR_FORMAT "%llu" 32 - #else 33 - #define SECTOR_FORMAT "%lu" 34 - #endif 35 - 36 26 #define SECTOR_SHIFT 9 37 27 38 28 /*