Linus Torvalds Ends Floppy Drive Driver Support

floppy drive

When Linus Torvalds created Linux in 1991, the computer he was working with like those of that era was equipped with a floppy drive. And now support for this has come to an end. Since in a recent publication the creator of the famous open source operating system announces the discontinuation of the driver maintenance for floppy drives.

A glance around allows, to some extent, to understand this information note. In fact, it is enough to note that most laptops and even desktop computers put on the market today do not have a floppy drive.

“Equipment of this type on the market today is increasingly difficult to find. The one that is still available in the stalls is USB-based. Suddenly the original driver is no longer searched, ”says Torvalds.

With that there will no longer be someone in charge of maintaining the support for the floppy disk driver for Linux, At least for the momentas Linus is taking the opportunity to attract interested third parties.

However, the driver remains available to ensure support for virtual machines that still depend on it.

For the new generations who are unaware of floppy disks or floppy disk I can tell you that this is a magnetic type data storage medium, formed by a thin circular sheet (disk) of magnetizable and flexible material (hence its name), enclosed in a plastic cover, square or rectangular, which was used in the computer, for example: for boot disk, to transfer data and information from one computer to another, or simply to store and safeguard files.

These are like the ones in the picture:

floppy_disk

The need to continue to guarantee this component that has earned the driver's source code the affection of a maintainer to this day. The fact is, floppy drive virtualization poses problems that don't arise with the hardware version.

“The hardware floppy drive is too slow to trigger concurrent access situations. On the other hand, the virtualized floppy drive brings a lot to the surface because it is much faster, "says Jiri Kosina in a post published 9 years ago.

The source code for this driver is available for developers who want Linux floppy drive support and provide information if needed.

drivers / block / floppy.c raw_cmd-> kernel_data = floppy_track_buffer; raw_cmd-> length = 4 * F_SECT_PER_TRACK; if (! F_SECT_PER_TRACK) return; / * allow for about 30ms for data transport per track * / head_shift = (F_SECT_PER_TRACK + 5) / 6; @@ -3230,8 +3233,12 @@ static int set_geometry (unsigned int cmd, struct floppy_struct * g, int cnt; / * sanity checking for parameters. * / If (g-> sect <= 0 || g- > head <= 0 || if ((int) g-> sect <= 0 || (int) g-> head <= 0 || / * check for overflow in max_sector * / (int) (g-> sect * g-> head) <= 0 || / * check for zero in F_SECT_PER_TRACK * / (unsigned char) ((g-> sect << 2) >> FD_SIZECODE (g)) == 0 || g-> track <= 0 || g-> track> UDP-> tracks >> STRETCH (g) || / * check if reserved bits are set * / (g-> stretch & ~ (FD_STRETCH | FD_SWAPSIDES | FD_SECTBASEMASK))! = 0 ) @@ -3375,6 +3382,24 @@ static int fd_getgeo (struct block_device * bdev, struct hd_geometry * geo) return 0;} static bool valid_floppy_drive_params (const short autodetect [8], int native_format) {size_t floppy_type_size = ARRAY_SIZE = ARRAY_SIZE (floppy_type); size_t i = 0; for (i = 0; i <8; ++ i) {if (autodetect [i] <0 || autodetect [i]> = floppy_type_size) return false;} if (native_format < 0 || native_format> = floppy_type_size) return false; return t rue; } static int fd_locked_ioctl (struct block_device * bdev, fmode_t mode, unsigned int cmd, unsigned long param) {@@ -3501,6 +3526,9 @@ static int fd_locked_ioctl (struct block_device * bdev, fmode_t mode, unsigned int SUPBOUND ( size, strlen ((const char *) outparam) + 1); break; case FDSETDRVPRM: if (! valid_floppy_drive_params (inparam.dp.autodetect, inparam.dp.native_format)) return -EINVAL; * UDP = inparam.dp; break ; case FDGETDRVPRM: @@ -3698,6 +3726,8 @@ static int compat_setdrvprm (int drive, return -EPERM; if (copy_from_user (& v, arg, sizeof (struct compat_floppy_drive_params))) return -EFAULT; if (! valid_floppy_drive_params (v.autodetect, v.native_format)) return -EINVAL; mutex_lock (& ​​floppy_mutex); UDP-> cmos = v.cmos; UDP-> max_dtr = v.max_dtr;

Floppy disks are an essential part of the history of computers, but we must admit that they are part of history. But, to underline, a question arises: isn't this a sprain for future generations?

The lack of hardware also means that ioctl range checking fixes are probably more relevant to anyone using floppies in a virtual environment.

Furthermore, it could be argued that, due to its openness, Linux is still the operating system of choice for people who want to experiment on equipment considered obsolete.


Be the first to comment

Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.