Changes by: flatcap
Update of /cvsroot/linux-ntfs/dynamic-disk/test
In directory usw-pr-cvs1:/tmp/cvs-serv27755
Modified Files:
compat.c dump.c extra.h ldminfo.c ldminfo.h
Log Message:
debugging improvements
Index: compat.c
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/test/compat.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -U2 -r1.12 -r1.13
--- compat.c 8 Feb 2002 13:19:09 -0000 1.12
+++ compat.c 17 Feb 2002 22:13:33 -0000 1.13
@@ -33,18 +33,24 @@
/* general kernel functions */
-void * kmalloc (size_t size, int flags);
-void kfree (const void *objp);
+void * __kmalloc (size_t size, int flags, char *fn);
+void __kfree (const void *objp, char *fn);
int printk (const char *fmt, ...);
void __brelse (struct buffer_head * buf);
-void __bforget (struct buffer_head * buf);
-NORET_TYPE void panic (const char * fmt, ...);
-void * kmalloc (size_t size, int flags)
+int ldm_a = 0;
+int ldm_f = 0;
+
+void * __kmalloc (size_t size, int flags, char *fn)
{
- return malloc (size);
+ void *ptr = malloc (size);
+ //printf ("malloc %p %6zu in %s\n", ptr, size, fn);
+ ldm_a++;
+ return ptr;
}
-void kfree (const void *objp)
+void __kfree (const void *objp, char *fn)
{
+ //printf ("free %p in %s\n", objp, fn);
+ ldm_f++;
free ((void *)objp);
}
@@ -115,15 +121,4 @@
}
-void __bforget (struct buffer_head * buf)
-{
- __brelse (buf);
-}
-
-NORET_TYPE void panic (const char * fmt, ...)
-{
- printk (LDM_CRIT "XXX panic called\n");
- exit (1);
-}
-
void add_gd_partition(struct gendisk *hd, int m, int start, int size)
{
@@ -132,8 +127,4 @@
}
-void invalidate_bdev(struct block_device *bdev, int destroy_dirty_buffers)
-{
-}
-
#ifdef CONFIG_BLK_DEV_MD
void md_autodetect_dev(kdev_t dev)
@@ -142,25 +133,4 @@
#endif
-struct block_device *bdget(dev_t dev)
-{
- struct block_device *bdev;
-
- bdev = kmalloc (sizeof (*bdev), 0);
- if (bdev) {
- bdev->bd_dev = dev;
- }
-
- return bdev;
-}
-
-void bdput(struct block_device *bdev)
-{
- kfree (bdev);
-}
-
-void truncate_inode_pages(struct address_space * mapping, loff_t lstart)
-{
-}
-
unsigned char *read_dev_sector (struct block_device *bdev, unsigned long n, Sector *sect)
{
@@ -192,14 +162,20 @@
{
atomic_dec (&page->count);
- if (atomic_read (&page->count) < 1)
+ if (atomic_read (&page->count) < 1) {
+ if (page->buffers)
+ kfree (page->buffers->b_data);
+ kfree (page->buffers);
kfree (page);
+ }
}
-#ifdef page_cache_release
-#undef page_cache_release
-#endif
-void page_cache_release(struct page *page)
+void page_cache_release (struct page *page)
{
__free_pages (page, 0);
+}
+
+void __free_page (struct page *page)
+{
+ __free_pages((page), 0);
}
Index: dump.c
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/test/dump.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -U2 -r1.9 -r1.10
--- dump.c 9 Feb 2002 13:46:03 -0000 1.9
+++ dump.c 17 Feb 2002 22:13:33 -0000 1.10
@@ -25,4 +25,8 @@
#include "ldminfo.h"
+#ifndef prefetch
+#define prefetch(X) 1
+#endif
+
/**
* print_guid -
Index: extra.h
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/test/extra.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -U2 -r1.2 -r1.3
--- extra.h 9 Feb 2002 13:44:33 -0000 1.2
+++ extra.h 17 Feb 2002 22:13:34 -0000 1.3
@@ -9,6 +9,13 @@
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,1)
-#define unlikely(x) __builtin_expect((x),0)
-#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0)
+void exit (int status);
+#define BUG_ON(condition) \
+ do { \
+ if (condition) { \
+ printk (KERN_CRIT "BUG in %s(%d) %s [%s]\n", \
+ __FILE__, __LINE__, __FUNCTION__, #condition); \
+ exit (1); \
+ } \
+ } while(0)
#endif
@@ -16,4 +23,24 @@
typedef struct list_head list_t;
#endif
+
+#include <linux/slab.h>
+#include <linux/pagemap.h>
+
+void * __kmalloc (size_t size, int flags, char *fn);
+void __kfree (const void *objp, char *fn);
+
+#define kmalloc(X,Y) __kmalloc(X,Y,__FUNCTION__)
+#define kfree(X) __kfree(X,__FUNCTION__)
+
+#ifdef page_cache_release
+#undef page_cache_release
+#endif
+
+#ifdef __free_page
+#undef __free_page
+#endif
+
+void page_cache_release (struct page *page);
+void __free_page (struct page *page);
#endif /* _LDM_EXTRA_H_ */
Index: ldminfo.c
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/test/ldminfo.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -U2 -r1.20 -r1.21
--- ldminfo.c 8 Feb 2002 13:19:09 -0000 1.20
+++ ldminfo.c 17 Feb 2002 22:13:34 -0000 1.21
@@ -139,13 +139,17 @@
return -1;
- if (!ldm_create_db_partition (hd, bdev, 0, first_minor, &ldb->ph))
+ if (!ldm_validate_privheads (bdev, 0, &ldb->ph))
return -1;
- base = hd->part[first_minor].start_sect;
+ /* All further references are relative to base (database start). */
+ base = ldb->ph.config_start;
- if ((!ldm_validate_privheads (bdev, base, &ldb->ph)) ||
- (!ldm_validate_tocblocks (bdev, base, toc)) ||
- (!ldm_validate_vmdb (bdev, base, &ldb->vm)))
- return -1;
+ /* Parse and check tocs and vmdb. */
+ if (!ldm_validate_tocblocks (bdev, base, toc) ||
+ !ldm_validate_vmdb (bdev, base, &ldb->vm))
+ return -1;
+
+ if (!ldm_create_partition (hd, first_minor++, base, ldb->ph.config_size))
+ goto free_buffers;
if (!ldm_get_vblks (bdev, base, ldb)) {
@@ -161,7 +165,6 @@
// FIXME first_sector / 0?
- if (ldm_create_data_partitions (hd, 0, first_minor + 1, ldb, disk)) {
+ if (ldm_create_data_partitions (hd, 0, first_minor, ldb, disk))
err = 1;
- }
free_buffers:
@@ -276,4 +279,5 @@
close (device);
+ //printf ("%d/%d\n", ldm_a, ldm_f);
return 0;
}
Index: ldminfo.h
===================================================================
RCS file: /cvsroot/linux-ntfs/dynamic-disk/test/ldminfo.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -U2 -r1.10 -r1.11
--- ldminfo.h 9 Feb 2002 13:45:12 -0000 1.10
+++ ldminfo.h 17 Feb 2002 22:13:34 -0000 1.11
@@ -29,4 +29,8 @@
#endif
+#ifndef BOOL
+typedef unsigned char BOOL;
+#endif
+
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,3)
#define kdev_val(X) (unsigned short)(X)
@@ -46,4 +50,7 @@
extern int debug;
+extern int ldm_a;
+extern int ldm_f;
+
extern struct proc_dir_entry *proc_root_fs;
@@ -66,5 +73,6 @@
struct buffer_head * ldm_bread (kdev_t dev, int block, int size);
-int ldm_create_db_partition (struct gendisk *hd, struct block_device *bdev, const unsigned long first_sector, const int first_minor, struct privhead *ph);
+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);
int ldm_validate_tocblocks (struct block_device *bdev, unsigned long base, struct tocblock *toc1);
@@ -72,5 +80,4 @@
int ldm_get_buffers (struct block_device *bdev, unsigned long base, struct vmdb *vm, list_t *lh_bh, list_t *lh_vl);
struct vblk * ldm_get_disk_objid (const struct ldmdb *ldb);
-int ldm_create_data_partitions (struct gendisk *hd, unsigned long first_sector, int first_minor, const struct ldmdb *ldb, const struct vblk *disk);
void ldm_free_buffers (list_t *bh);
void ldm_free_vblks (list_t *vb);
@@ -79,5 +86,5 @@
int ldm_validate_partition_table (struct block_device *bdev);
-int exit (int);
+void exit (int);
int open64 (const char *file, int oflag, ...);
long long lseek64 (int fd, long long offset, int whence);
@@ -87,7 +94,4 @@
int isdigit (int c);
char * basename(const char *filename);
-
-void * kmalloc (size_t size, int flags);
-void kfree (const void *objp);
#endif // __LDMINFO_H_
|