patch-1.3.99 linux/arch/m68k/amiga/amipart.c
Next file: linux/arch/m68k/amiga/config.c
Previous file: linux/arch/m68k/amiga/Makefile
Back to the patch index
Back to the overall index
- Lines: 120
- Date:
Thu Jan 1 02:00:00 1970
- Orig file:
v1.3.98/linux/arch/m68k/amiga/amipart.c
- Orig date:
Tue Apr 23 13:57:02 1996
diff -u --recursive --new-file v1.3.98/linux/arch/m68k/amiga/amipart.c linux/arch/m68k/amiga/amipart.c
@@ -1,119 +0,0 @@
-/*
- * linux/amiga/amipart.c
- *
- * Amiga partition checking driver for 680x0 Linux
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file README.legal in the main directory of this archive
- * for more details.
- */
-
-#include <linux/fs.h>
-#include <linux/genhd.h>
-#include <linux/kernel.h>
-
-#include <asm/amigardb.h>
-#include <asm/machdep.h>
-
-extern int current_minor;
-
-static ulong checksum (ulong *ptr, int len)
-{
- ulong sum;
- int cnt;
-
- for (sum = 0, cnt = 0; cnt < len; cnt++)
- sum += ptr[cnt];
-
- return sum;
-}
-
-/* XXX */
-/* int current_minor = 0; */
-
-void amiga_check_partition(struct gendisk *hd, kdev_t dev)
-{
- int i, minor = current_minor, m_lim = current_minor + hd->max_p;
- struct buffer_head *bh;
- struct RigidDiskBlock *rdb;
- struct PartitionBlock *pb;
- ulong bnum, partsect;
-
- for (bnum = 0; bnum < RDB_LOCATION_LIMIT/2; bnum++) {
- if (!(bh = bread(dev,bnum,1024))) {
- printk (" unable to read block %ld\n", bnum);
- return;
- }
-#ifdef DEBUG
- printk ("block read, press mousebutton to continue\n");
- waitbut();
-#endif
- rdb = (struct RigidDiskBlock *)bh->b_data;
- if (rdb->rdb_ID == IDNAME_RIGIDDISK)
- break;
- rdb = (struct RigidDiskBlock *)&bh->b_data[512];
- if (rdb->rdb_ID == IDNAME_RIGIDDISK)
- break;
- brelse (bh);
- }
- if (bnum == RDB_LOCATION_LIMIT/2) {
- /* no RDB on the disk! */
- printk (" unable to find RigidDiskBlock\n");
- return;
- }
-
- /* checksum the RigidDiskBlock */
- if (checksum ((ulong *)rdb, rdb->rdb_SummedLongs) != 0) {
- printk (" RDB checksum bad\n");
- return;
- }
-
- printk(" %s%c:", hd->major_name, 'a'+(minor >> hd->minor_shift));
-
- partsect = rdb->rdb_PartitionList;
- brelse (bh);
-
- for (i = 1; minor < m_lim && partsect != 0xffffffff; minor++, i++)
- {
- ulong *env;
-
- if (!(bh = bread(dev,partsect/2,1024))) {
- printk (" block %ld read failed\n", partsect);
- return;
- }
-#ifdef DEBUG
- printk ("block read, press mousebutton to continue\n");
- waitbut();
-#endif
- pb = (struct PartitionBlock *)bh->b_data;
- if (partsect & 1)
- pb = (struct PartitionBlock *)&bh->b_data[512];
- if (pb->pb_ID != IDNAME_PARTITION) {
- printk (" block %ld Not a partition block (%#lx)\n",
- partsect, pb->pb_ID);
- brelse (bh);
- return;
- }
- if (checksum ((ulong *)pb, pb->pb_SummedLongs) != 0) {
- printk (" block %ld checksum bad\n", partsect);
- brelse (bh);
- return;
- }
-
- env = pb->pb_Environment;
-
- hd->part[minor].start_sect = env[DE_LOWCYL]
- * env[DE_NUMHEADS] * env[DE_BLKSPERTRACK];
- hd->part[minor].nr_sects = (env[DE_UPPERCYL]
- - env[DE_LOWCYL] + 1)
- * env[DE_NUMHEADS] * env[DE_BLKSPERTRACK];
-
- printk(" %s%c%d", hd->major_name,
- 'a'+(minor >> hd->minor_shift), i);
-
- partsect = pb->pb_Next;
- brelse (bh);
- }
-
- printk ("\n");
-}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this