ata_phys_link_offline(9)
π ata_phys_link_offline β Kernel API Manual β¨
okay bestie, so this is one of those tiny little libata helpers from the Kernel API Manual series, and honestly? She's short but she's got lore. Let's get into it π«Ά
πΈ NAME πΈ
ata_phys_link_offline β the vibe check that tells you whether a given link is offline π
β¨ SYNOPSIS β¨
bool ata_phys_link_offline (struct ata_link *link );
π ARGUMENTS π
linkβ the ATA link you wanna test, bestie. That's it. That's the whole argument π
π DESCRIPTION π
So the whole point: you're testing whether link is offline. Simple, right?
But here's the plot twist π β this function returns 0 if the offline status of link can't be obtained at all. Like, no answer, no data, nada. Which means you cannot be out here assuming:
ata_link_online(link) != !ata_link_offline(link)
Nope. Not valid. Those two are not each other's opposites in this house π«π It's giving "not all zeros are equal."
LOCKING: None. Zero. Zilch. No locks, go off queen π
β RETURN β
True if the port offline status is available and offline. If it's unavailable, you get 0 β remember the DESCRIPTION, don't come for me π€
π¦ SEE ALSO π¦
And now, the group chat roll call π β from the kernel file ./drivers/ata/libata-core.c:
ata_link_next(9)ata_dev_next(9)ata_dev_phys_link(9)ata_force_cbl(9)ata_force_pflags(9)ata_force_link_limits(9)ata_force_xfermask(9)ata_force_quirks(9)atapi_cmd_type(9)ata_set_rwcmd_protocol(9)ata_tf_read_block(9)ata_build_rw_tf(9)ata_pack_xfermask(9)ata_unpack_xfermask(9)ata_xfer_mask2mode(9)ata_xfer_mode2mask(9)ata_xfer_mode2shift(9)ata_mode_string(9)ata_dev_classify(9)ata_id_string(9)ata_id_c_string(9)ata_read_native_max_address(9)ata_set_max_sectors(9)ata_hpa_resize(9)ata_dump_id(9)ata_id_xfermask(9)ata_exec_internal(9)ata_pio_need_iordy(9)ata_pio_mask_no_iordy(9)ata_do_dev_read_id(9)ata_dev_read_id(9)ata_dev_power_set_standby(9)ata_dev_power_set_active(9)ata_read_log_page(9)ata_dev_configure(9)ata_cable_40wire(9)ata_cable_80wire(9)ata_cable_unknown(9)ata_cable_ignore(9)ata_cable_sata(9)sata_print_link_status(9)ata_dev_pair(9)ata_timing_cycle2mode(9)ata_down_xfermask_limit(9)ata_set_mode(9)ata_wait_ready(9)ata_wait_after_reset(9)ata_std_prereset(9)ata_std_postreset(9)ata_dev_same_device(9)ata_dev_reread_id(9)ata_dev_revalidate(9)ata_is_40wire(9)cable_is_40wire(9)ata_dev_xfermask(9)ata_dev_set_xfermode(9)ata_dev_set_feature(9)ata_dev_init_params(9)atapi_check_dma(9)ata_std_qc_defer(9)ata_sg_init(9)ata_sg_clean(9)ata_sg_setup(9)swap_buf_le16(9)ata_qc_free(9)ata_qc_complete(9)ata_qc_get_active(9)ata_qc_issue(9)ata_phys_link_online(9)ata_link_online(9)ata_link_offline(9)ata_host_suspend(9)ata_host_resume(9)ata_dev_init(9)ata_link_init(9)sata_link_init_spd(9)ata_port_alloc(9)ata_host_alloc(9)ata_host_alloc_pinfo(9)ata_finalize_port_ops(9)ata_host_start(9)ata_host_init(9)ata_host_register(9)ata_host_activate(9)ata_dev_free_resources(9)ata_port_detach(9)ata_host_detach(9)ata_pci_remove_one(9)ata_platform_remove_one(9)ata_msleep(9)ata_wait_register(9)
lowkey the most important takeaway: 0 means "couldn't even tell you," not "online." Don't let the bool fool you, bestie ππ
and that's the whole page!! source dir is ./drivers/ata, version date October 2026 β mwah, go read some ata lore, ily πβ¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms