Changes by: flatcap
Update of /cvsroot/linux-ntfs/dynamic-disk/test
In directory usw-pr-cvs1:/tmp/cvs-serv5436/test
Modified Files:
compat.c extra.h ldminfo.c ldminfo.h
Log Message:
tidy ups, build fixes
Index: compat.c
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/test/compat.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -U2 -r1.17 -r1.18
--- compat.c 20 Jun 2002 18:04:55 -0000 1.17
+++ compat.c 5 Aug 2002 15:46:51 -0000 1.18
@@ -82,4 +82,7 @@
return 0;
+ if ((!debug) && (buf[0] == ' ') && isdigit(buf[1]))
+ return 0;
+
if (ignore) {
ignore = (strchr (buf, '\n') == NULL);
@@ -98,14 +101,24 @@
}
+void __brelse (struct buffer_head * buf)
+{
+ if (buf) {
+ kfree (buf->b_data);
+ kfree (buf);
+ }
+}
+
+#ifdef CONFIG_BLK_DEV_MD
+void md_autodetect_dev(kdev_t dev)
+{
+}
+#endif
+
struct buffer_head * ldm_bread (kdev_t dev, int block, int size)
{
struct buffer_head *bh;
- int m;
long long offset;
- m = minor (dev);
- offset = hd[m].start_sect;
- offset <<= 9;
- offset += (((long long) block) * size);
+ offset = (((long long) block) * size);
bh = kmalloc (sizeof (*bh), 0);
@@ -129,24 +142,4 @@
}
-void __brelse (struct buffer_head * buf)
-{
- if (buf) {
- kfree (buf->b_data);
- kfree (buf);
- }
-}
-
-void add_gd_partition(struct gendisk *hd, int m, int start, int size)
-{
- hd->part[m].start_sect = start;
- hd->part[m].nr_sects = size;
-}
-
-#ifdef CONFIG_BLK_DEV_MD
-void md_autodetect_dev(kdev_t dev)
-{
-}
-#endif
-
unsigned char *read_dev_sector (struct block_device *bdev, unsigned long n, Sector *sect)
{
@@ -207,3 +200,13 @@
__free_pages((page), 0);
}
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,28)
+void put_partition(struct parsed_partitions *p, int n, int from, int size)
+{
+ if (n < p->limit) {
+ p->parts[n].from = from;
+ p->parts[n].size = size;
+ }
+}
+#endif
Index: extra.h
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/test/extra.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -U2 -r1.4 -r1.5
--- extra.h 17 Jun 2002 00:15:13 -0000 1.4
+++ extra.h 5 Aug 2002 15:46:51 -0000 1.5
@@ -20,4 +20,19 @@
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,28)
+#define MAX_PART 256
+struct parsed_partitions {
+ char name[40];
+ struct {
+ unsigned long from;
+ unsigned long size;
+ int flags;
+ } parts[MAX_PART];
+ int next;
+ int limit;
+};
+void put_partition(struct parsed_partitions *p, int n, int from, int size);
+#endif
+
#include <linux/slab.h>
#include <linux/pagemap.h>
@@ -43,4 +58,9 @@
void page_cache_release (struct page *page);
void __free_page (struct page *page);
+
+#include <linux/list.h>
+
+#undef list_for_each
+#define list_for_each(pos, head) for (pos = (head)->next; pos != (head); pos = pos->next)
#endif /* _LDM_EXTRA_H_ */
Index: ldminfo.c
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/test/ldminfo.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -U2 -r1.32 -r1.33
--- ldminfo.c 24 Jun 2002 12:59:28 -0000 1.32
+++ ldminfo.c 5 Aug 2002 15:46:51 -0000 1.33
@@ -23,25 +23,10 @@
#include "ldminfo.h"
-
-int * hardsect_size[255];
-int * blk_size [255];
-int * blksize_size [255];
-
-struct hd_struct hd [256];
-int hd_sizes[256];
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,2)
-struct gendisk hd_gendisk = { 3, "hd", 6, 64, hd, hd_sizes };
-#else
-struct gendisk hd_gendisk = { 3, "hd", 6, hd, hd_sizes };
-#endif
-
-
-int ldm_parse_vmdb(const u8 *buffer, struct vmdb *vm);
+#include "check.h"
/**
* dump_info - Display a list of partitions, a la fdisk
*/
-void dump_info (char *name, int maxminor)
+void dump_info (char *name, struct parsed_partitions *pp)
{
int i;
@@ -55,21 +40,20 @@
for (i = 0; i < 256; i++) {
char buf[16];
- int minor = i % maxminor;
long long start;
long long size;
- if (hd[i].nr_sects == 0)
- continue;
+ if (pp->parts[i].size == 0)
+ break;
- if (minor)
+ if (i)
if (numeric)
- sprintf (buf, "%.10sp%d", name, minor);
+ sprintf (buf, "%.10sp%d", name, i);
else
- sprintf (buf, "%.10s%d", name, minor);
+ sprintf (buf, "%.10s%d", name, i);
else
sprintf (buf, "%.10s", name);
- start = hd[i].start_sect; start <<= 9;
- size = hd[i].nr_sects; size <<= 9;
+ start = pp->parts[i].from; start <<= 9;
+ size = pp->parts[i].size; size <<= 9;
printf ("%-12.12s | %12lld %10lld %6lld | %12lld %10lld %6lld\n", buf, start, start>>9, start>>20, size, size>>9, size>>20);
}
@@ -78,58 +62,9 @@
/**
- * ldm_partition2
- *
- * This is here so we can extract the structs from the kernel part
- */
-int ldm_partition2 (struct gendisk *hd, struct block_device *bdev, struct ldmdb *ldb,
- int first_minor)
-{
- struct vblk *disk;
- unsigned long base;
- int err = -1;
-
- if (!ldm_validate_partition_table (bdev))
- return -1;
-
- if (!ldm_validate_privheads (bdev, 0, &ldb->ph, hd, first_minor))
- return -1;
-
- /* All further references are relative to base (database start). */
- base = ldb->ph.config_start;
-
- /* Parse and check tocs and vmdb. */
- if (!ldm_validate_tocblocks (bdev, base, ldb) ||
- !ldm_validate_vmdb (bdev, base, ldb))
- return -1;
-
- if (!ldm_get_vblks (bdev, base, ldb)) {
- printk (LDM_CRIT "get vblks failed\n");
- goto free_buffers;
- }
-
- disk = ldm_get_disk_objid (ldb);
- if (!disk) {
- printk ("can't find this disk\n");
- goto free_buffers;
- }
-
- // FIXME first_sector / 0?
- if (ldm_create_data_partitions (hd, 0, first_minor, ldb, disk))
- err = 1;
-
-free_buffers:
- //FIXME no buffers to free
- return err;
-}
-
-/**
* main - ldminfo entry point
*/
int main (int argc, char *argv[])
{
- int minor = 64;
- kdev_t drive = mk_kdev(3,minor); /* hdb */
int a;
- int maxminor = 64;
int info = 0;
int dump = 0;
@@ -138,4 +73,5 @@
int ver = 0;
struct block_device bdev;
+ struct inode ino;
struct stat64 st;
@@ -151,11 +87,4 @@
}
- /*
- if (help || ver) {
- printf ("\nGDB is free software, covered by the GNU General Public License, and you are\n");
- printf ("welcome to change it and/or distribute copies of it under certain conditions.\n");
- }
- */
-
if (help || (argc - info - dump - copy - debug) < 2) {
printf ("\nUsage:\n %s [options] device ...\n", basename (argv[0]));
@@ -178,4 +107,5 @@
long long size;
struct ldmdb ldb; //FIXME move to heap
+ struct parsed_partitions pp;
if (!argv[a][0])
@@ -216,27 +146,24 @@
INIT_LIST_HEAD(&ldb.v_part);
- memset (hardsect_size, 0, sizeof (hardsect_size));
- memset (blk_size, 0, sizeof (blk_size));
- memset (blksize_size, 0, sizeof (blksize_size));
- memset (hd, 0, sizeof (hd));
- memset (hd_sizes, 0, sizeof (hd_sizes));
-
- hd_gendisk.part[minor].nr_sects = size >> 9;
- hd_gendisk.sizes[minor] = size >> (BLOCK_SIZE_BITS - 9);
- blk_size[major(drive)] = hd_gendisk.sizes;
- bdev.bd_dev = kdev_val(drive); /* hack (bd_dev isn't a kdev_t) */
+ memset (&bdev, 0, sizeof (bdev));
+ bdev.bd_inode = &ino;
+ ino.i_size = size;
+
+ memset (&pp, 0, sizeof (pp));
+ pp.parts[0].from = 0;
+ pp.parts[0].size = size >> 9;
+ pp.limit = 255;
- if (ldm_partition2 (&hd_gendisk, &bdev, &ldb, minor + 1) != 1) {
+ if (ldm_partition (&pp, &bdev, &ldb) != 1) {
printf ("Something went wrong, skipping device '%s'\n", argv[a]);
- continue;
+ goto free;
}
-#if 1
if (dump)
dump_database (argv[a], &ldb);
else
- dump_info (argv[a], maxminor);
-#endif
+ dump_info (argv[a], &pp);
+free:
ldm_free_vblks(&ldb.v_dgrp);
ldm_free_vblks(&ldb.v_disk);
Index: ldminfo.h
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/test/ldminfo.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -U2 -r1.19 -r1.20
--- ldminfo.h 24 Jun 2002 12:59:28 -0000 1.19
+++ ldminfo.h 5 Aug 2002 15:46:51 -0000 1.20
@@ -20,26 +20,8 @@
#include "../linux/fs/partitions/ldm.h"
-#ifndef minor
-#define minor MINOR
-#endif
-
-#ifndef major
-#define major MAJOR
-#endif
-
-#ifndef mk_kdev
-#define mk_kdev MKDEV
-#endif
-
#ifndef BOOL
typedef unsigned char BOOL;
#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,3)
-#define kdev_val(X) (unsigned short)(X)
-#else
-#define kdev_val(X) ((X).value)
-#endif
-
#define LDM_CRIT KERN_CRIT
#define LDM_ERR KERN_ERR
@@ -47,12 +29,4 @@
#define LDM_DEBUG KERN_DEBUG
-extern int * hardsect_size[255];
-extern int * blk_size [255];
-extern int * blksize_size [255];
-
-extern struct hd_struct hd [256];
-extern int hd_sizes[256];
-extern struct gendisk hd_gendisk;
-
extern int device;
extern int debug;
@@ -65,48 +39,13 @@
extern int ldm_mem_maxc;
-extern struct proc_dir_entry *proc_root_fs;
-
-struct tm
-{
- int tm_sec; /* Seconds */
- int tm_min; /* Minutes */
- int tm_hour; /* Hours */
- int tm_mday; /* Day */
- int tm_mon; /* Month */
- int tm_year; /* Year */
- int tm_wday; /* Day of week */
- int tm_yday; /* Days in year */
- int tm_isdst; /* DST */
- long int tm_gmtoff; /* Seconds east of UTC */
- const char *tm_zone; /* Timezone abbreviation */
-};
-
void dump_database (char *name, struct ldmdb *ldb);
void copy_database (char *file, int fd, long long size);
-struct buffer_head * ldm_bread (kdev_t dev, int block, int size);
-
-BOOL ldm_create_partition (struct gendisk *hd, int minor, int start, int size);
-BOOL ldm_create_data_partitions (struct gendisk *hd, unsigned long first_sector, int first_minor, const struct ldmdb *ldb, const struct vblk *disk);
-int ldm_validate_privheads (struct block_device *bdev, unsigned long base, const struct privhead *ph1, struct gendisk *hd, unsigned long first_minor);
-int ldm_validate_tocblocks (struct block_device *bdev, unsigned long base, struct ldmdb *ldb);
-int ldm_validate_vmdb (struct block_device *bdev, unsigned long base, struct ldmdb *ldb);
-int ldm_get_buffers (struct block_device *bdev, unsigned long base, struct vmdb *vm, struct list_head *lh_bh, struct list_head *lh_vl);
-struct vblk * ldm_get_disk_objid (const struct ldmdb *ldb);
-void ldm_free_buffers (struct list_head *bh);
void ldm_free_vblks (struct list_head *vb);
-int ldm_get_vblks(struct block_device *bdev, unsigned long base, struct ldmdb *ldb);
-int ldm_combine_vblks (struct ldmdb *ldb);
-int ldm_validate_partition_table (struct block_device *bdev);
-void exit (int);
int open64 (const char *file, int oflag, ...);
long long lseek64 (int fd, long long offset, int whence);
int stat64 (const char *file, struct stat64 *buf);
-ssize_t read (int fd, void *buf, size_t count);
-int close (int fd);
-struct tm * localtime(const time_t *timer);
int isdigit (int c);
char * basename(const char *filename);
-int stat (const char *file_name, struct stat *buf);
#endif // __LDMINFO_H_
|