When Linus Torvalds created Linux in 1991, the computer he worked on, like those of that era, was equipped with a floppy disk drive . And now support for it has come to an end . In a recent post, the creator of the famous open-source operating system announced the discontinuation of maintenance for the floppy disk drive driver.
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 this, there will no longer be anyone in charge of maintaining support for the Linux floppy disk driver, at least for the time being , as 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 newer generations unfamiliar with floppy disks, I can tell you that this is a magnetic data storage medium , consisting of a thin circular sheet (disk) of magnetizable and flexible material (hence its name), enclosed in a square or rectangular plastic case, which was used in computers, for example: as a 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:

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 to developers who want Linux floppy drive support and can 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 computer history, but we must admit they are part of history. However, to emphasize this, a question arises: isn't this a setback 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.